ListView с подпунктами. (Android)
Мне нужно показать в виде списка результат запроса к БД. Я возвращаю значения запроса 2 ("треска", "значение"). Я думал об использовании SimpleAdapter для решения проблемы, но это не сработало.
это мой код:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.techcharacteristic);
PopulateTechCharacteristicList populateList = new PopulateTechCharacteristicList(
this);
populateList.execute();
SimpleAdapter adapter = new SimpleAdapter(this, list,
R.layout.techcharacteristic_rows,
new String[] {"cod", "value"}, new int[] {
R.id.techCharacteristic, R.id.techCharacteristicName });
setListAdapter(adapter);
}
public class PopulateTechCharacteristicList extends
AsyncTask<Integer, String, Integer> {
ProgressDialog progress;
Context context;
public PopulateTechCharacteristicList(Context context) {
this.context = context;
}
protected void onPreExecute() {
progress = ProgressDialog.show(TechCharacteristicList.this,
getResources().getString(R.string.Wait), getResources()
.getString(R.string.LoadingOperations));
}
protected Integer doInBackground(Integer... paramss) {
ArrayList<TechCharacteristic> arrayTechChar = new ArrayList<TechCharacteristic>();
TechCharacteristicWSQueries techCharWSQueries = new TechCharacteristicWSQueries();
try {
arrayTechChar = techCharWSQueries
.selectTechCharacteristicByAsset("ARCH-0026");
HashMap<String, String> temp = new HashMap<String,
for(TechCharacteristic strAux : arrayTechChar)
{
temp.put("cod", strAux.getTechCharacteristic() + " - " + strAux.getTechCharacteristicName());
temp.put("value", strAux.getTechCharacteristicValue());
list.add(temp);
}
} catch (QueryException e) {
e.printStackTrace();
return 0;
}
return 1;
}
protected void onPostExecute(Integer result) {
if(result == 1)
progress.dismiss();
}
}
Из-за того, что я использую те же коды ("cod", "value") для включения значений в HashMap, мой listView всегда показывает последний вставленный элемент. Но в моем заявлении SimpleAdapter я использую жестко закодированный ("cod", "value") и всякий раз, когда я помещаю любое значение, кроме ("cod", "value") в HashMap, listView переносит пустой.
Может кто-нибудь мне помочь?
1 ответ
Из-за того, что я использую те же коды ("cod", "value") для включения значений в HashMap, мой listView всегда показывает последний вставленный элемент.
Как вы создаете HashMap
объект из for loop
и добавление значений к этому объекту только в цикле for, следовательно, предыдущие значения будут удалены, и вы получите только последние значения.
Чтобы решить это, вам нужно создать HashMap
объект в for loop
соответствующий каждому ряду.
Пытаться
HashMap<String, String> temp = null;
for(TechCharacteristic strAux : arrayTechChar)
{
temp = new HashMap<String,String>();
temp.put("cod", strAux.getTechCharacteristic() + " - " + strAux.getTechCharacteristicName());
temp.put("value", strAux.getTechCharacteristicValue());
list.add(temp);
}