1
我正在開發一個應用程序,其中包含自定義佈局和arrayAdapter。我的自定義佈局由1個ImageView,2個textViews和1個複選框組成。帶複選框的ListView持有者
展臺圖像文件和文本存儲在值文件夾中的string.xml中。
所以我的問題是我不能得到正確的位置(索引),當我點擊複選框。我只想要一個Toast消息與複選框上的位置一起出現。
例如如果我點擊meme3複選框出現
讓我們看看一些代碼:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res = getResources();
titles = res.getStringArray(R.array.titles);
descriptions = res.getStringArray(R.array.descriptions);
list = (ListView) findViewById(R.id.listView1);
MyAdapter adapter = new MyAdapter(this, titles, images, descriptions);
list.setAdapter(adapter);
}
這是我ArrayAdapter
class MyAdapter extends ArrayAdapter<String> implements OnCheckedChangeListener {
Context context;
int[] images;
String[] titlesArray, descrptionArray;
MyAdapter(Context context, String[] titles, int[] images, String[] description) {
super(context, R.layout.single_row, R.id.textView1, titles);
this.context = context;
this.images = images;
this.titlesArray = titles;
this.descrptionArray = description;
}
class MyViewHolder {
ImageView myImage;
TextView myTitle;
TextView myDescription;
CheckBox box;
MyViewHolder(View v) {
myImage = (ImageView) v.findViewById(R.id.imageView1);
myTitle = (TextView) v.findViewById(R.id.textView1);
myDescription = (TextView) v.findViewById(R.id.textView2);
box = (CheckBox) v.findViewById(R.id.checkBox1);
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
MyViewHolder holder = null;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.single_row, parent, false);
holder = new MyViewHolder(row);
row.setTag(holder);
} else {
holder = (MyViewHolder) row.getTag();
}
holder.myImage.setImageResource(images[position]);
holder.myTitle.setText(titlesArray[position]);
holder.myDescription.setText(descrptionArray[position]);
holder.box.setOnCheckedChangeListener(this);
return row;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
int position = (Integer)buttonView.getTag();
Toast.makeText(getContext(), ""+position, Toast.LENGTH_SHORT).show();
}
}
}
我的目錄有20個項目。現在,如果我檢查一個複選框,該應用程序會自動選擇其他2個複選框!請幫忙!
抱歉,但我有一個問題!讓我們假設我的列表有20個項目。如果我點擊第1項,應用程序會自動選擇項目編號9和17!爲什麼? – andre
它從Android的錯誤? – andre
不需要在代碼中更改..一次我有同樣的問題。但我在最後修正了它.. – Meghna