を使用してリストビューに値を設定できませんでした。リストビューに表示する値はデータベースから取得しています。リストビューにはテキストビューとテキストの編集が含まれています。 私のコードは)このviewitems()、および選択項目(中カスタムアダプタを使用してリストビューに値を設定しようとしたときに、ハッシュマップのデータが表示されなかったときに、ホルダ
private void SelectItems() {
// TODO Auto-generated method stub
try {
datas = new ArrayList<Map<String, String>>();
DatabaseHelper dbHelper = new DatabaseHelper(this.getApplicationContext());
newDB = dbHelper.getWritableDatabase();
Cursor c = newDB.rawQuery("select distinct im_code ,im_desc ,im_srp "
+ " from itemmaster", null);
Log.v("item detailss", c.toString());
while (c.moveToNext()){
HashMap<String, String> datanums = new HashMap<String, String>();
String im_code = c.getString(c.getColumnIndex("im_code"));
String desc = c.getString(c.getColumnIndex("im_desc"));
datanums.put("codec", im_code);
datanums.put("namec", desc);
String price = c.getString(c.getColumnIndex("im_srp"));
datanums.put("imsrpc", price);
}
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(), "Could not create or Open the database");
}
}
private void ViewItems() {
// TODO Auto-generated method stub
list.setAdapter(null);
arrTemp = new String[datas.size()];
datas.add(datanums);
MyListAdapter myListAdapter = new MyListAdapter();
list.setAdapter(myListAdapter);
Log.v("list itemm",datas.toString());
}
private class MyListAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
if(datas != null && datas.size() != 0){
return datas.size();
}
return 0;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return datas.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//ViewHolder holder = null;
final ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = Orders.this.getLayoutInflater();
convertView = inflater.inflate(R.layout.order_simple_row, null);
holder.textView1 = (TextView) convertView.findViewById(R.id.name);
holder.textView2 = (TextView) convertView.findViewById(R.id.srp);
holder.textview3 = (TextView) convertView.findViewById(R.id.code);
holder.editText1 = (EditText) convertView.findViewById(R.id.cases);
holder.editText2 = (EditText) convertView.findViewById(R.id.pcs);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.ref = position;
holder.textView1.setText(datanums.get("namec"));
holder.textView2.setText(datanums.get("imsrpc"));
holder.textview3.setText(datanums.get("codec"));
holder.editText1.setText(arrTemp[position]);
holder.editText1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
arrTemp[holder.ref] = arg0.toString();
}
});
return convertView;
}
private class ViewHolder {
TextView textView1,textView2,textview3;
EditText editText1,editText2;
int ref;
}
}
あり、リストビューに取得するのOnCreateと表示値から呼び出されるメソッドです。正確な問題は解決できませんでしたが、編集テキストはoutput.pleaseヘルプに正しく表示されています。
「プライベートクラスViewHolder」を「静的クラスViewHolder」に変更してください。 'ViewHolder'クラスのすべての変数は、' public' –
でなければなりません。私の編集テキストが表示されていなくても静的にするのは問題ですか? – ellie