مشکل در گرفتن positiom در ListView بدون فرستادن به Activity دیگر
با سلام
می خوام توی لیست ویو در اکتیویتی جاری بتونم توی همون اکتیویتی posotion رو بخونم و ازش استفاده کنم
اما دقیقا نمی دونم باید چکار کنم
لطفا راهنماییم کنید، می شه مثال بزنید؟
سلام ،
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.i("ListView", "item number " + position + " clicked!");
}
});
اگر هم میخوایید از اطلاعات موجود در هر آیتم استفاده کنید بهتره کدها تونو قرار بدید ، بخصوص اگر آداپتر دارید.
الان که دیدم این سوال قبلا هم پرسیده شده بود یعنی بدست آوردن مکان آیتم انتخاب شده!
ممنون
اما از اونجایی که ادپتر دارم مثلا می خوام روی یک باتن کلیک لیسنر انجام بشه و با گرفتن position مکان آیتم، متنی که توی همون مکان هست رو لوگ کنه

من از این کد استفاده می کنم که اکتیویتی رو می بنده و مجدد باز می کنه که اصلا بهینه نیست
btnLog.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intentCurrent = new Intent(G.currentActivity, SecondActivity.class);
intentCurrent.putExtra("Pos", position);
G.currentActivity.finish();
G.currentActivity.startActivity(intentCurrent);
}
});
و بعدا توی onCreate می گم
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form2);
//
//Get Intent Value
Bundle extras = getIntent().getExtras();
int positi /> if (extras != null) {
positi /> final StructNote note = G.notes.get(position);
Log.i(G.LOG_TAG, ""Target Is: " + note.title + ": " + note.detail);
}
}
قصدم اینه که دیگه به اکتیویتی ادیت نرم
این رو باید چکار کنم
نه توی تصویری که گذاشتین اثری از لیست ویو هست نه توی کدها لیست ویویی تعریف شده (کد بالایی برای button هست، کد پایینی هم که توی oncreate هست). اگه از لیست ویو، در جایی از پروژتون استفاده می کنید از همون کدی که Sprit گذاشته استفاده کنید، کار میکنه.
قصدم اینه که با توجه به position بتونم روی متن نمایش داده شده در لیست ویو پردازش انجام بدم، حالا Log یا کپی در کلیپبورد اندروید یا هر کار دیگه
import java.util.ArrayList;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class AdapterNote extends ArrayAdapter<StructNote> {
public AdapterNote(ArrayList<StructNote> array) {
super(G.context, R.layout.adapter_notes, array);
}
private static class ViewHolder {
public ViewGroup LayoutRt;
public TextView txtTitle;
public TextView txtSort;
public TextView txtTableName;
public TextView txtID;
public TextView txtpos;
public EditText txtDetail;
public Button btnANCopy;
public ViewHolder(View view) {
txtTitle = (TextView) view.findViewById(R.id.txtTitleAN);
txtSort = (TextView) view.findViewById(R.id.txtSortAN);
txtTableName = (TextView) view.findViewById(R.id.txtTableNameAN);
txtID = (TextView) view.findViewById(R.id.txtIDAN);
txtpos = (TextView) view.findViewById(R.id.txtpos);
txtDetail = (EditText) view.findViewById(R.id.txtDetailAN);
LayoutRt = (ViewGroup) view.findViewById(R.id.layout_Rt);
btnANCopy = (Button) view.findViewById(R.id.btnANCopy);
}
public void fill(ArrayAdapter<StructNote> Adapter, StructNote Item, final int position) {
txtTitle.setText(Item.title);
txtDetail.setText(Item.detail);
txtSort.setText(Item.Sort.toString());
txtTableName.setText(Item.nameOfTable);
txtID.setText(Item.intID.toString());
txtpos.setText("" + position);
LayoutRt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
/*
Intent intent = new Intent(G.currentActivity, ActivityEdit.class);
intent.putExtra("POSITION", position);
G.currentActivity.startActivity(intent);
*/
}
});
btnANCopy.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
/*
Intent intentCurrent = new Intent(G.currentActivity, SecondActivity.class);
intentCurrent.putExtra("Pos", position);
G.currentActivity.finish();
G.currentActivity.startActivity(intentCurrent);
*/
}
});
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructNote item = getItem(position);
if (c null {
c parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
}
در اکتیویتی SecondActivity این کد رو دارم
public void copy(String strdata) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(strdata);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form2);
//Get Intent Value
Bundle extras = getIntent().getExtras();
int positi /> if (extras != null) {
positi /> final StructNote note = G.notes.get(position);
copy(note.title + ": " + note.detail);
}
}
در بالا اکتیویتی بسته می شه و مجدد باز می شه
مسئله همینجاست، این احساس به آدم دست می ده که ریفرش می شه
می خوام به جای سویچ بین اکتیویتی ها بتونم مقادیر رو مستقیما کپی کنم
چاره چیه؟
خب پسر این که کاری نداره :
btnANCopy.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("Log" , "number " + position + " text is = " + txtDetail.getText().toString());
}
});
الان متن داخل editText شما با زدن اون دکمه log میشه.
توضیح دادم که
مشکل مال زمانیه که می خوام متن رو توی کلیپبورد کپی کنم
کلاس StructNote.java رو به :
package ir.redreactor.app.Com.NovinEr;import android.app.Activity;import android.content.Context;publicclassStructNoteextendsActivity{publicString nameOfTable;publicIntegerSort;publicInteger intID;publicBooleanFavorite;publicString title;publicString detail;publicvoid copyTHis(int myposition){finalStructNote note = G.notes.get(myposition);
android.text.ClipboardManager clipboard =(android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(note.title +"\n "+ note.detail);}}
و کلاس AdapterNote.java رو به :
package ir.redreactor.app.Com.NovinEr;import java.util.ArrayList;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;publicclassAdapterNoteextendsArrayAdapter<StructNote>{publicAdapterNote(ArrayList<StructNote> array){super(G.context, R.layout.adapter_notes, array);}privatestaticclassViewHolder{publicViewGroupLayoutRt;publicTextView txtTitle;publicTextView txtSort;publicTextView txtTableName;publicTextView txtID;publicTextView txtpos;publicEditText txtDetail;publicButton btnANCopy;publicViewHolder(View view){
txtTitle =(TextView) view.findViewById(R.id.txtTitleAN);
txtSort =(TextView) view.findViewById(R.id.txtSortAN);
txtTableName =(TextView) view.findViewById(R.id.txtTableNameAN);
txtID =(TextView) view.findViewById(R.id.txtIDAN);
txtpos =(TextView) view.findViewById(R.id.txtpos);
txtDetail =(EditText) view.findViewById(R.id.txtDetailAN);LayoutRt=(ViewGroup) view.findViewById(R.id.layout_Rt);
btnANCopy =(Button) view.findViewById(R.id.btnANCopy);}publicvoid fill(ArrayAdapter<StructNote>Adapter,StructNoteItem,finalint position){
txtTitle.setText(Item.title);
txtDetail.setText(Item.detail);
txtSort.setText(Item.Sort.toString());
txtTableName.setText(Item.nameOfTable);
txtID.setText(Item.intID.toString());
txtpos.setText(""+ position);}}@OverridepublicView getView(finalint position,View convertView,ViewGroup parent){StructNote item = getItem(position);finalViewHolder holder;if(convertView ==null){
convertView = G.inflater.inflate(R.layout.adapter_notes, parent,false);
holder =newViewHolder(convertView);
holder.btnANCopy.setOnClickListener(newOnClickListener(){@Overridepublicvoid onClick(View arg0){// TODO Auto-generated method stubStructNote sn =(StructNote) holder.btnANCopy.getTag();
sn.copyTHis(position);}});
convertView.setTag(holder);}else{
holder =(ViewHolder) convertView.getTag();}
holder.fill(this, item, position);return convertView;}}
تغییر دادم
اما باز هم جواب نمی ده و در کلاس AdapterNote.java در خط کد
sn.copyTHis(position);
خطا می ده، حتی
sn.copyTHis(position);
رو به صورت
sn.copyTHis(str4Data);
نوشتم و توی StructNote.java این رو قرار دادم
public void copyTHis(String strData) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(strData);
}
و در AdapterNote.java این رو قرار دادم
sn.copyTHis(holder.txtTitle.getText() + ": " + holder.txtDetail.getText());
همون خطای قبل
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .