Tôi hiện đang xây dựng một ứng dụng có yêu cầu được gửi vào web, kết quả sau đó được phân tích cú pháp và đưa vào một ArrayList đối tượng.truy cập các đối tượng tùy chỉnh trong danh sách xem
danh sách này sau đó, điền một ListView. Tôi muốn tạo một onClickListener
để cho phép tôi biết đối tượng nào được nhấp vào, nhưng tôi không thể tìm được cách chính xác để thực hiện điều này.
hoặc chỉ định onClick cho ListView trong hoạt động ban đầu hoặc chỉ định người nghe trong hàm getView
trong bộ điều hợp tùy chỉnh.
có vẻ như với tôi như chỉ định người nghe trong số getView
có quá nhiều chi phí.
cách hoạt động? những gì là tốt hơn?
mã cho hoạt động chính:
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
}
mã cho danh sách adapter:
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'? để làm gì? –
@PareshMayani - Oh xin lỗi, sai lầm của tôi là onItemClickListener .. Cảm ơn vì điều đó. – user370305
Tôi nghĩ rằng 'onClickListener' không thể nhận được một' onItemSelectedListener'. vì nó phải là một 'onItemSelectedListener' – thepoosh