मैं वर्तमान में एक ऐप बना रहा हूं जिसमें वेब पर एक अनुरोध भेजा जा रहा है, नतीजा तब पार्स हो जाता है और ऑब्जेक्ट्स के ऐरेलिस्ट में डाल दिया जाता है।एक सूचीदृश्य में कस्टम ऑब्जेक्ट्स तक पहुंच
यह सूची तब सूची सूची को पॉप्युलेट करती है। मैं onClickListener
बनाना चाहता हूं जो मुझे यह जानने की अनुमति देगा कि किस ऑब्जेक्ट पर क्लिक किया गया था, लेकिन मुझे इसे लागू करने का सही तरीका नहीं मिल रहा है।
या तो मूल गतिविधि में ListView पर ऑनक्लिक को असाइन करें, या कस्टम एडाप्टर में getView
फ़ंक्शन के भीतर श्रोता असाइन करें।
ऐसा लगता है कि getView
में श्रोताओं को असाइन करना बहुत अधिक है।
यह कैसे काम करता है? क्या बेहतर है? मुख्य गतिविधि के लिए
कोड:
public class NoPicList extends Activity {
ListView list;
NoPicAdapter adapter;
ProgressDialog mDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.no_pic_list);
list = (ListView) findViewById(R.id.noPicListView);
Bundle b = getIntent().getExtras();
String request = b.getString("REQUEST");
mDialog = new ProgressDialog(this);
mDialog.setCancelable(false);
mDialog.setMessage("Lodaing Data");
mDialog.show();
new GetNewsAndCalendar().execute(request);
}
@Override
protected void onPause() {
mDialog.dismiss();
super.onPause();
}
class GetNewsAndCalendar extends
AsyncTask<String, Void, ArrayList<Message>> {
@Override
protected ArrayList<Message> doInBackground(String... params) {
String url = params[0];
DOMFeedParser parser = new DOMFeedParser(url);
return parser.parse();
}
@Override
protected void onPostExecute(ArrayList<Message> result) {
adapter = new NoPicAdapter(NoPicList.this, result);
list.setAdapter(adapter);
//FIRST OPTION TO INSERT onClickListener
mDialog.dismiss();
}
} //end of GetNewsAndCalendar
}
सूची एडाप्टर के लिए कोड:
public class NoPicAdapter extends BaseAdapter {
private ArrayList<Message> data;
private Activity mActivity;
private LayoutInflater inflater = null;
public NoPicAdapter(Activity a, ArrayList<Message> result) {
mActivity = a;
data = result;
inflater = (LayoutInflater) mActivity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = LayoutInflater.from(mActivity).inflate(R.layout.no_pic_list_item,
null);
TextView title = (TextView) vi.findViewById(R.id.noPicTitle);
TextView subtitle = (TextView) vi.findViewById(R.id.noPicSubtitle);
title.setText(data.get(position).getTitle());
subtitle.setText(data.get(position).getDate());
// SECOND PLACE TO INSERT THE onClickListener
return vi;
}
}
'setOnItemSelectedListener'? किस लिए? –
@PareshMayani - ओह क्षमा करें, मेरी गलती यह थी ITemClickListener .. इसके लिए धन्यवाद। – user370305
मुझे लगता है कि 'onClickListener' को' ITemSelectedListener 'पर नहीं मिल सकता है। इसके लिए इसे 'onItemSlectedListener' होना चाहिए – thepoosh