آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در گرفتن positiom در ListView بدون فرستادن به Activity دیگر

iSheykhi  12 سال پیش  12 سال پیش
+1 0

با سلام

می خوام توی لیست ویو در اکتیویتی جاری بتونم توی همون اکتیویتی posotion رو بخونم و ازش استفاده کنم

اما دقیقا نمی دونم باید چکار کنم

لطفا راهنماییم کنید، می شه مثال بزنید؟

 برای این سوال 8 پاسخ وجود دارد.
پاسخ به سوال 
Spirit  12 سال پیش
+2 0

سلام ،

listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

Log.i("ListView", "item number " + position + " clicked!");

}

});

اگر هم میخوایید از اطلاعات موجود در هر آیتم استفاده کنید بهتره کدها تونو قرار بدید ، بخصوص اگر آداپتر دارید.

الان که دیدم این سوال قبلا هم پرسیده شده بود یعنی بدست آوردن مکان آیتم انتخاب شده!

پاسخ به سوال 
iSheykhi  12 سال پیش
0 0

ممنون

اما از اونجایی که ادپتر دارم مثلا می خوام روی یک باتن کلیک لیسنر انجام بشه و با گرفتن 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);
}
}

قصدم اینه که دیگه به اکتیویتی ادیت نرم

این رو باید چکار کنم

0 0
یکم بیشتر توضیح بدید یعنی تو همون صفحه ای که لیست هست میخواید با یک کلیک log نشون داده بشه؟ (12 سال پیش)
0 0
دوست گرامی توی آداپتر ، در متد getView میتونید کاری که میگید رو انجام بدید ، اگه بلد نیستید کد آداپتر رو بزارید دقیق تر راهنمایی کنیم. (12 سال پیش)
0 0
منظورتون AdapterNote.java هست? کدها طبق آموزش نوشته شدن (12 سال پیش)
پاسخ به سوال 
hamidd  12 سال پیش
+1 0

نه توی تصویری که گذاشتین اثری از لیست ویو هست نه توی کدها لیست ویویی تعریف شده (کد بالایی برای button هست، کد پایینی هم که توی oncreate هست). اگه از لیست ویو، در جایی از پروژتون استفاده می کنید از همون کدی که Sprit گذاشته استفاده کنید، کار میکنه.

پاسخ به سوال 
iSheykhi  12 سال پیش
0 0

قصدم اینه که با توجه به 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);
}
}

در بالا اکتیویتی بسته می شه و مجدد باز می شه
مسئله همینجاست، این احساس به آدم دست می ده که ریفرش می شه
می خوام به جای سویچ بین اکتیویتی ها بتونم مقادیر رو مستقیما کپی کنم
چاره چیه؟

پاسخ به سوال 
Spirit  12 سال پیش
+1 0

خب پسر این که کاری نداره :

 btnANCopy.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Log.i("Log" , "number " + position + " text is = " + txtDetail.getText().toString());
}
});

الان متن داخل editText شما با زدن اون دکمه log میشه.

پاسخ به سوال 
iSheykhi  12 سال پیش
0 0

توضیح دادم که

مشکل مال زمانیه که می خوام متن رو توی کلیپبورد کپی کنم

0 0
نه مشکل از منه. (12 سال پیش)
0 0
اگه بتونید پروژتونو آپلود کنید بهتر می تونیم کمکتون کنیم. (12 سال پیش)
0 0
اسپریت جان اختیار داری، این چه حرفیه (12 سال پیش)
0 0
کسی نمی تونه کمک کنه؟ مهندس آقاجانی شما راهنمایی می کنید لطفا؟ (12 سال پیش)
پاسخ به سوال 
iSheykhi  12 سال پیش
0 0

کلاس 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());

همون خطای قبل

0 0
ینی کسی نمی تونه کمک کنه؟ (12 سال پیش)
0 0
اگه سورس برنامه رو آپلود می کردی شاید. (12 سال پیش)
پاسخ به سوال 
iSheykhi  12 سال پیش
0 0

این هم واسه اون دوستانی دنبال راه حل هستن

با تشکر از دوستانی که کمک نکردن

لینک اول

لینک دوم

+1 0
یعنی مشکلت این بود؟ انصافی ببین به مشکلت دقیق اشاره کردی آخه؟ میگفتی مثلا رو getSystemService(Context.CLIPBOARD_SERVICE) خطا هست. (12 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .