2012-04-01 169 views
0

我有三個項目的自定義列表視圖。其中之一就像「將其添加到數據庫」,當我點擊它時,它會向數據庫中插入一些內容。以編程方式更改自定義列表視圖項目

我想要做的是在做了插入之後,將文本更改爲「從數據庫中刪除此文本」以及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; 
       } 
      } 
     });  

回答

1

這是絕對有可能。 onItemClick回調的查看參數是您單擊的視圖,您可以簡單地更改該視圖的內容。即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); 
+0

太棒了!非常感謝! – andoni90 2012-04-01 10:02:59

相關問題