Почему мой OnItemClickListener
не работает?
public class UseAdp extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Context context=this;
ListView lv=(ListView) findViewById(R.id.list_v);
MyAdapter adp=new MyAdapter(context);
for (int i = 0; i < 50; i++) {
adp.addItem("item " + i);
}
lv.setAdapter(adp);
// lv.setItemsCanFocus(true);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
showToast(arg2);
}
});
//registerForContextMenu(lv);
}
public void showToast(int arg)
{
Toast.makeText(this, "Position"+arg, Toast.LENGTH_SHORT).show();
}
}
Вот мой код адаптера:
public class MyAdapter extends BaseAdapter {
private Context mcontext;
private ArrayList<String> aList=new ArrayList<String>();
public MyAdapter(Context context) {
mcontext = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return aList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return aList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public void addItem(final String item) {
aList.add(item);
//notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater)mcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.list_rows,parent,false);
((TextView)convertView.findViewById(R.id.txt1)).setText(getItem(position).toString());
((ImageView)convertView.findViewById(R.id.img1)).setImageResource(R.drawable.icon);
if(position==2){
((CheckBox)convertView.findViewById(R.id.CheckBox01)).setChecked(true);
}
return convertView;
}
}
Я думаю, что вы не использовали метод viewholder(), он отлично работает, когда я его проверил. См. Полный код:
public class FirstScreen extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView lv=(ListView) findViewById(R.id.ListView01);
MyAdapter adp=new MyAdapter(getApplicationContext());
for (int i = 0; i < 50; i++) {
adp.addItem("item " + i);
}
lv.setAdapter(adp);
// lv.setItemsCanFocus(true);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
showToast(arg2);
}
});
//registerForContextMenu(lv);
}
public void showToast(int arg)
{
Toast.makeText(this, "Position"+arg, Toast.LENGTH_SHORT).show();
}
class MyAdapter extends BaseAdapter {
private Context mcontext;
private ArrayList<String> aList=new ArrayList<String>();
public MyAdapter(Context context) {
mcontext = context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return aList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return aList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public void addItem(final String item) {
aList.add(item);
//notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater)mcontext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.list_row,parent,false);
((TextView)convertView.findViewById(R.id.txt1)).setText(getItem(position).toString());
((ImageView)convertView.findViewById(R.id.img1)).setImageResource(R.drawable.icon);
return convertView;
}
}
static class ViewHolder {
TextView tab1Text;
ImageView backgrouundView;
}
}
main.xml и list_row здесь не включены.
Попробуйте заполнить ListView
getListView()
вместо findViewById()
(я предполагаю, что ваша деятельность расширяет ListActivity
)