2011-04-24 102 views
0

我有一個由SimpleCursorAdapter和自定義ViewBinder支持的ListView。我想讓這個listview中的項目在點擊時改變它們的顏色。如果我在OnClickListener中這樣做 - 它可以單獨工作,改變點擊項目的顏色和列表中項目的顏色,每個第7(我想這個時間段取決於列表視圖的可視區域)。ListView項setTextColor修改其他元素

任何人都可以建議如何處理這個?或者,也許指向一個更優雅的方式,使listView中的項目可選?

謝謝。

UPD:(對不起,壞的格式 - 這是我第一次張貼問題):

下面是我如何努力使在ListView項目「選擇」:

private void setupListView(final ListView lv) { 

     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, final long id) { 
       RelativeLayout layout = (RelativeLayout) view; 
       int color; 
       if (conditionMet) { 
         color = R.color.gray; 
       } else { 
         color = R.color.red; 
       } 

       for(int i = 0; i < layout.getChildCount(); i++) { 
((TextView)layout.getChildAt(i)).setTextColor(getResources().getColor(color)); 
    } 

       return; 
      }} 

這是我的init適配器:

 final SimpleCursorAdapter adapter = 
       new SimpleCursorAdapter(
         this, 
         itemId, 
         cursor, 
         from, 
         to 
       ); 
     adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 

      public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 
       final TextView textView = (TextView) view; 
// do necessary conversions 
       return true; 
      } 
     }); 
listView.setAdapter(adapter); 
+1

你能告訴我們你的代碼嗎? – MByD 2011-04-24 09:18:17

+0

添加了一些代碼,添加任何其他部分?實際上,正如我所說,這部分工作,因爲它「突出顯示」項目本身,但隨後它的視圖被重用,我想 – khusrav 2011-04-24 09:34:28

回答

0

由於沒有其他的答案,我想,我有一些麻煩與下面的建議,我張貼我是如何做的:

  1. 我店的商品的ID在一個特殊的地圖點擊

  2. in listview onclick我檢查剛剛點擊過的物品的ID是否在地圖上:如果是,我將其刪除並使物品及其子物體變爲A色,否則我將該ID添加到地圖並設置顏色到B

    public void onItemClick(AdapterView<?> adapterView, View view, int position, final long id) { 
          Context ctx = MainActivity.this; 
           RelativeLayout layout = (RelativeLayout) view; 
           try { 
    
             int color; 
             if (items.containsKey(id)) { 
              items.remove(id); 
              color = R.color.gray; 
              tempIds.remove(id); 
             } else { 
              items.put(id, sum); 
              color = R.color.red; 
              tempIds.add(id); 
             } 
    
    
            for (int i = 0; i < layout.getChildCount(); i++) { 
             final TextView textView = (TextView) layout.getChildAt(i); 
             textView.setTextColor(getResources().getColor(color)); 
            } 
           } catch (ParseException e) { 
            Log.e(MainActivity.class.toString(), "Exception parsing", e); 
           } 
           return; 
          } 
    

    }

0

您可以使用屬性android:listSelector設置主題或在列表中當前所選項目的任何繪製或顏色。

+0

我想讓這個列表多選 - 這個工作會嗎? – khusrav 2011-04-24 09:33:56