簡體   English   中英

帶有子項的ListView。 (機器人)

[英]ListView with subitems. (Android)

我需要在列表視圖中向數據庫顯示查詢結果。 我返回查詢2個值(``cod'',“ value”)。 我想到了使用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();
    }
}

由於被utlizando使用相同的代碼(``cod'',``value'')在HashMap中包含值,因此我的listView始終顯示插入的最后一項。 但是在我的語句SimpleAdapter中,使用了硬編碼的(“ cod”,“ value”),並且每當我在HashMap中放置除(“ cod”,“ value”)以外的任何值時,listView都為空。

誰能幫我?

由於被utlizando使用相同的代碼(``cod'',``value'')在HashMap中包含值,因此我的listView始終顯示插入的最后一項。

當您在for loop創建HashMap對象時,僅在for循環中將值添加到該對象中,因此先前的值將被擦除,而您只會獲得最后的值。

為了解決這個問題,您需要在for loop創建與每一行相對應的HashMap對象。

嘗試

        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);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM