2016-03-19 3 views
0

を使用してリストビューに値を設定できませんでした。リストビューに表示する値はデータベースから取得しています。リストビューにはテキストビューとテキストの編集が含まれています。 私のコードは)この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ヘルプに正しく表示されています。

+0

「プライベートクラスViewHolder」を「静的クラスViewHolder」に変更してください。 'ViewHolder'クラスのすべての変数は、' public' –

+0

でなければなりません。私の編集テキストが表示されていなくても静的にするのは問題ですか? – ellie

答えて

0
public List<Map<String, String>> 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"); 
     } 


return datas; 

} 

/*あなたの活動やアダプタクラスの呼び出しでは、この方法(これは、リストを返します)と場合の条件をご確認ください(ArrayListを!= nullを& & arraylist.sizeを()> 0)*/

1

getViewメソッドの開始時に次の行を追加します。

HashMap<String, String> datanums=datas.get(possition); 
+0

私はこれを使用しました。まだ検索されたデータはありません。 – ellie

0

このコードを使用して、テキストビューを設定します。これがうまくいきたいです。

holder.textView1.setText(datas.get(position).get("namec")); 
holder.textview3.setText(datas.get(position).get("codec")); 
holder.textview3.setText(datas.get(position).get("srpc")); 
+0

これは動作しますが、正しくはありません – ellie

関連する問題