2017-01-16 19 views
0

リストビューで個々のアイテムを強調表示しようとしていますが、リストビュー全体がアイテムの代わりに強調表示されています。Listviewは、アイテムの代わりにonclickを指定しました

助けてください。

あなたが(GETビュー上のアダプタあなたと一緒に仕事をしなければならないListView項目の行に特定のビューでの作業のための
 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)を読むことを強くお勧めします。 Ifは、AndroidのListsがどのように動作するかについての素晴らしいまとめを提供します。 –

+0

'onScrollChangeListener'を試してみませんか?それから私はあなたにソリューションを提案することができます。 –

答えて

0

)メソッドは、何が必要...などのビューを取得してのリスナー色を設定

+0

詳細を教えてください。私は比較的新しいandroid –

+0

あなたはリストビューの項目の行全体の色を変更しています。カスタムリストビューが必要な場合は、xmlファイルのliststyle.xmlで定義したとおりに各行項目が表示され、イベントを発生させて各行からビューにアクセスするには、配列アダプタを拡張する別のアダプタクラスを作成する必要があります。新しく作成したクラスアダプタを作成してlistviewに渡すよりも、getviewメソッドとperfomをオーバーライドしてください。この例を見てください:http://www.ezzylearning.com/tutorial/customizing-android-listview-items-with-custom-arrayadapter –

0

、あなたはそれを押してリストビュー項目の色を保持するには

あなたのリストビューのレイアウトに以下の行を含める:これを試してみてください

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 
    } 
}); 

この方法は、一つだけのアイテムをいつでも色が選択されます。このような電子フォルダ。あなたはこのようなもので解像度/値/ 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

リストビューは

これを追加し、選択した項目を表示する性質を持っていますあなたのリストにコードを表示するxmlのitem_layoutを表示する

android:background="@drawable/list_selector" 

これはセレクタコードです。 Drawableセレクタファイルを作成してください

<!-- <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

この回答をもう一度読んでいます私はコードを編集しました。それはあなたのために働くでしょう –

関連する問題