2016-03-21 13 views
-2

Wenn ich versuche, den Wert für die Listenansicht mit dem benutzerdefinierten Adapter festzulegen, wird nur der letzte eingegebene Wert in der Hash-Map angezeigt. Hash-Karte ist statisch. Ich weiß nicht, warum ich nicht alle Werte in der Hash-Map für die Schlüssel bekomme, die ich in hashmap verwendet habe. hier meinen CodeWert kann nicht mit benutzerdefiniertem Adapter in Listenansicht gesetzt werden

public class Nextclass extends Activity { 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.nextclass); 
list = (ListView)findViewById(R.id.list1); 

    SelectItems(); 
    ViewItems(); 
} 

private 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 code ,desc ,name " 
      + " from item", null); 


     while (c.moveToNext()){ 


     String cod = c.getString(c.getColumnIndex("code")); 
     datanums.put("code", cod); 
     String desc1 = c.getString(c.getColumnIndex("desc")); 
     datanums.put("desc", desc1); 
     String name = c.getString(c.getColumnIndex("name")); 
     datanums.put("name", name); 
       datas.add(datanums); 
     } 

    } catch (SQLiteException se) { 
     Log.e(getClass().getSimpleName(), "Could not create or Open the database"); 
     } 
    return datas; 
} 
private void ViewItems() { 

// TODO Auto-generated method stub 

arrTemp = new String[datas.size()]; 


MyListAdapter myListAdapter = new MyListAdapter(); 
list.setAdapter(myListAdapter); 
Log.v("list itemm",datas.toString()); 


} 

public 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) { 

    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.code); 
     holder.textview3 = (TextView) convertView.findViewById(R.id.desc); 
     holder.editText1 = (EditText) convertView.findViewById(R.id.cases); 


     convertView.setTag(holder); 

    } else { 

     holder = (ViewHolder) convertView.getTag(); 
    } 

    holder.ref = position; 

    holder.textView1.setText(datanums.get("name")); 
    holder.textview3.setText(datanums.get("code")); 
    holder.textView2.setText(datanums.get("desc")); 
    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 { 

    public Object list; 
    TextView textView1,textView2,textview3; 
EditText editText1,editText2; 
    int ref; 
    } 


    return convertView; 
} 

private class ViewHolder { 

public Object list; 
TextView textView1,textView2,textview3; 
EditText editText1; 
int ref; 
} 

bitte help.I verwendet alternative Methoden, aber nicht worked.thanks im Voraus

+0

Legen Sie Ihren vollständigen Aktivitätscode mit oncreate-Methode, das scheint der halbe Code zu sein. –

+0

Warum übergeben Sie nicht hashmap in Adapterkonstruktor. – Pankaj

+0

Warum benutzen Sie keinen 'SimpleCursorAdapter'? – pskink

Antwort

0
holder.textView1.setText(datas.get(position).get("name")); 
    holder.textview3.setText(datas.get(position).get("code")); 
    holder.textView2.setText(datas.get(position).get("desc")); 

Sie Hash-Karte in der Array-Liste hinzufügen, aber in den Adapter Sie versuchen, Holen Sie Daten von der Hash-Karte, anstatt dass Sie Wert von Arraylist nehmen müssen, der hashmap-Objekt zurückgibt und von diesem Objekt müssen Sie Wert für Ihre Schlüssel erhalten.

hoffe das wird helfen.

+0

Ich habe es gerade jetzt versucht. Aber wenn ich den Code ausführe, werden leere Textansichten in der Liste angezeigt. – Bivin

+0

Leere Daten, die bedeuten, dass Sie die Anzahl der Zeilen gemäß Ihrer Datengröße erhalten, jetzt müssen Sie überprüfen, wann Sie Ihre Daten in die Liste eingeben. Bitte stellen Sie auch c.moveToFirst() vor Ihre while-Schleife. –

+1

Ich überprüfte den code.Now kann ich Werte in die Textansicht drucken, aber es ruft immer noch den letzten eingegebenen Wert in der Hash-Map für alle Spalten ab. Haben Sie eine andere Möglichkeit, Werte in der Listenansicht anzuzeigen? – Bivin