簡體   English   中英

以編程方式更改自定義ListView項

[英]Change Custom ListView Item programmatically

我有一個包含三個項目的自定義列表視圖。 其中之一就像“將其添加到數據庫”,當我單擊它時,它將在數據庫中插入一些內容。

我要它執行的操作是在插入后,將文本更改為“從數據庫中刪除此文本”,然后將onClick方法更改為調用方法以刪除該記錄,而不是插入方法。 這可能嗎?

這是我的代碼:

final String[] opcs = new String[]{"Resultados", "Clasificación", text_fav};

      ArrayAdapter<String> aa = new ArrayAdapter<String>(this, R.layout.list_menutipo_item, opcs);
      m_list.setAdapter(aa);          
      m_list.setOnItemClickListener(new OnItemClickListener() {

          @Override
        public void onItemClick(AdapterView<?> parent, View view,
                  int position, long id) {
                Intent newActivity = null;
                switch( position )
                {                  
                    case 0:  ...


                    case 2:  if (isConnected(m_context))
                     {
                        añadirFavorito();
                     }
                    break;  
                }
            }   
        });    

絕對有可能。 onItemClick回調的view參數是您單擊的視圖,您只需更改該視圖的內容即可。 view.setText("Delete this from the DB")

另外,您還將想區分下一次單擊是“將其添加到數據庫”還是“從數據庫中刪除”,在這里進行字符串比較,如if("Delete this from the DB".equals(view.getText()))可能不是一個好習慣,您可以在view.setTag(true)類的視圖中設置一個標志,以指示當前視圖的內容是“從數據庫中刪除此視圖”。 然后,您可以使用view.getTag()返回該標志以進行比較。

Boolean flag = (Boolean)view.getTag();
if(flag == null || !flag) {
    view.setText("Delete this from the DB");
    flag = true;
    //... code to insert a record to DB
} else {
    view.setText("Insert this to the DB");
    flag = false;
    //... code to delete a record from DB
}
view.setTag(flag);

暫無
暫無

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

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