2017-01-16 47 views
0

我想突出顯示從字符串拆分的列表視圖中的單個項目,但整個列表視圖突出顯示而不是項目。Listview突出顯示onclick而不是項目

請幫忙。

 protected void onPostExecute(String result) { 

     Local.Set(getApplicationContext(), "TicketHolders", result);    
     String[] RowData = result.toString().split("\\;"); 
     List<String> TicketholdersArray = new ArrayList<>(); 

     for(int x=0;x<RowData.length;x++){ 
      TicketholdersArray.add(RowData[x].toString()); 
     } 

     // below creates and styles listview 
     ListView listView1 = (ListView)  findViewById(R.id.your_list_view_id); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(GuestlistActivity.this,R.layout.liststyle, TicketholdersArray); 
     listView1.setAdapter(adapter); 

     listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> ArrayAdapter, View view, int position, long id) { 
       view.setSelected(true); 
      } 
     }); 
+0

我強烈建議你閱讀[由Vogella本教程(http://www.vogella.com/tutorials/AndroidListView/article.html)。如果給你一個關於Android中的Lists如何工作的很好的概要。 –

+0

你想嘗試'onScrollChangeListener'嗎?然後我可以建議你解決。 –

回答

0

爲你和你的工作適配器上獲取視圖(ListView項排在特定視圖中工作)方法獲取查看和設置讀心人顏色等等任何你需要的

+0

您能否詳細說明。我相對較新的android –

+0

在你改變列表視圖項目的整個行顏色的視圖。如果你想自定義列表視圖,並且每一行項目將在你的xml文件liststyle.xml中定義,現在如果你想引發事件並從每一行訪問視圖,你必須製作另一個擴展陣列適配器的適配器類和重寫getview方法和perfom,而不是創建一個新創建的類適配器並將其傳遞給listview。請看這個示例:http://www.ezzylearning.com/tutorial/customizing-android-listview-items-with-custom-arrayadapter –

0

嘗試了這一點:

爲了保持ListView項的顏色,當你按下它,包括在你的列表視圖佈局以下行:

android:background="@drawable/bg_key" 

然後在drawabl定義bg_key.xml像這個網絡文件夾:

<?xml version="1.0" encoding="utf-8" ?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_selected="true" 
     android:drawable="@color/pressed_color"/> 
    <item 
     android:drawable="@color/default_color" /> 
</selector> 

最後,包括這在你的ListView的onClickListener:

listView.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position,long arg3) { 
     view.setSelected(true); 
     ... //Anything 
    } 
}); 

這樣,只有一個項目將是選擇色彩在任何時間。你可以像這樣定義在res /價值/ colors.xml你的顏色值:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="pressed_color">#4d90fe</color> 
    <color name="default_color">#ffffff</color> 
</resources> 

希望這可以幫助你

+0

試過這個。它改變整個列表的顏色而不是項目 –

0

ListView中有一個屬性來顯示所選擇的項目

添加此碼到您的ListView item_layout在XML

android:background="@drawable/list_selector" 

,這是你選擇的代碼。創建一個可繪製選擇文件

<!-- <item android:drawable="@color/android:transparent" android:state_selected="true" /> --> 
<item android:drawable="@color/list_bg" android:state_selected="true"/> 
<item android:drawable="@color/list_bg" android:state_activated="true"/> 
<item android:drawable="@color/transparent"/> 
+0

問題不在xml中。當按下顏色確實會改變,但整個列表改變而不是列表中的項目 –

+0

您的意思是說所有列表項目的背景改變 –

+0

再次閱讀本答案我編輯了代碼。它會爲你工作 –