2012-04-01 11 views
0

私は3つの項目でカスタムリストビューを持っています。そのうちの1つは「これをDBに追加する」のようなものです。クリックするとDBに何かが挿入されます。カスタムリストビュー項目をプログラムで変更する

挿入を行った後、テキストを「DBから削除」に変更し、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")です。

また、次のクリックが「DBにこれを追加する」か「DBから削除する」かを区別したい場合は、if("Delete this from the DB".equals(view.getText()))のような文字列比較を実行することは良い方法ではないかもしれません。 view.setTag(true)のようなビューでは、現在のビューのコンテンツが「DBからこれを削除する」ことを示します。後で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

関連する問題