2017-01-16 48 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

再次阅读本答案我编辑了代码。它会为你工作 –