2016-03-03 71 views
0

我有一個ArrayList<String> List,其中包含listview all_list中的一些項目。如何通過檢查ArrayList<String> List的內容以編程方式在列表視圖all_list中選擇這些項目?如何以編程方式在列表視圖中選擇項目

爲例如listview all_list包含[0]蘋果 [1]的橙色 [2]香蕉

ArrayList<String> List,我有橙色所以我想選擇對列表視圖all_list位置1項(高亮)自動。

我嘗試過使用all_list.setItemChecked(),但它什麼也沒做,並關閉了應用程序。列出適配器後,我正在執行該操作。

+0

@A KA您可以使用ListView的方法爲setSelection(位置) –

+0

我可以看到你正在試圖代碼? – pRaNaY

+0

all_list.setChoiceMode(apps.CHOICE_MODE_MULTIPLE_MODAL); all_list.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener(){@Override public void onItemCheckedStateChanged(ActionMode mode,final int position,long id,boolean checked){if(all_list.isItemChecked(position)){all_list.setItemChecked(2,true);} INT什麼=(INT)all_list.getItemIdAtPosition(位置);} –

回答

0

將onItemClickListener設置爲列表視圖,以便在單擊時設置一個布爾標誌,將每行中的複選框設置爲選中狀態。然後調用notifyDataSetChanged()

0

試試這個

MainActivity.java

package com.example.multiseekbar; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListView; 


public class MainActivity extends Activity { 

    ListView listView1; 

    ArrayList<ModelClass> modelClass = new ArrayList<ModelClass>(); 
    FruitSelectAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     modelClass.add(new ModelClass("Orange", true)); 
     modelClass.add(new ModelClass("Apple", false)); 
     modelClass.add(new ModelClass("Banana", false)); 
     modelClass.add(new ModelClass("Grapes", false)); 

     listView1 = (ListView) findViewById(R.id.listView1); 
     adapter = new FruitSelectAdapter(MainActivity.this, modelClass); 
     listView1.setAdapter(adapter); 

     listView1.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 
       if(modelClass.get(arg2).isSelected()){ 
        modelClass.get(arg2).setSelected(false); 
       }else{ 
        modelClass.get(arg2).setSelected(true); 
       } 

       adapter.notifyDataSetChanged(); 
      } 
     }); 


    } 

} 

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.multiseekbar.MainActivity" > 

    <ListView 
     android:id="@+id/listView1" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     > 
    </ListView> 

</RelativeLayout> 

FruitSelectAdapter.java

package com.example.multiseekbar; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Color; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.CheckBox; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class FruitSelectAdapter extends BaseAdapter 
{ 

    private Activity activity; 
    private LayoutInflater inflater; 

    private ArrayList<ModelClass> modelClass=null; 

    public FruitSelectAdapter(Activity activity, ArrayList<ModelClass> modelClass) { 
     this.activity = activity; 
     this.modelClass = modelClass; 
    } 


    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return modelClass.size(); 
    } 
    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return modelClass.get(position); 
    } 
    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 
    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     final ViewHolder holder;  
     if (inflater == null) 
      inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     if (convertView == null) { 
      holder =new ViewHolder(); 
      convertView = inflater.inflate(R.layout.row1, null);    
      holder.txtFruitName = (TextView)convertView.findViewById(R.id.txtFruitName); 
      holder.cbFruitSelectStatus = (CheckBox)convertView.findViewById(R.id.cbFruitSelectStatus); 
      holder.linLayBackground = (LinearLayout) convertView.findViewById(R.id.linLayBackground); 
      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder)convertView.getTag(); 
     } 

     holder.txtFruitName.setText(modelClass.get(position).getFruitName()); 
     holder.cbFruitSelectStatus.setChecked(modelClass.get(position).isSelected()); 

     if(modelClass.get(position).isSelected()){ 
      holder.linLayBackground.setBackgroundColor(Color.parseColor("#80ccff")); 
     }else{ 
      holder.linLayBackground.setBackgroundColor(Color.parseColor("#FFFFFF")); 
     } 

     return convertView; 
    } 

    class ViewHolder{  
     TextView txtFruitName; 
     CheckBox cbFruitSelectStatus; 
     LinearLayout linLayBackground; 
    } 

} 

row1.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:id="@+id/linLayBackground" 
    android:layout_height="70dp" 
    android:orientation="horizontal" 
    > 

    <TextView 
     android:id="@+id/txtFruitName" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text="Fruit name" 
     android:layout_weight="1" 
     android:textSize="16sp" 
     android:textColor="#000000" /> 


    <CheckBox 
     android:id="@+id/cbFruitSelectStatus" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="false" 
     android:focusable="false" 
     android:focusableInTouchMode="false" /> 

</LinearLayout> 

ModelClass.java

package com.example.multiseekbar; 

public class ModelClass { 

    String fruitName; 
    boolean isSelected=false; 

    public ModelClass(String fruitName, boolean isSelected) { 
     this.fruitName = fruitName; 
     this.isSelected = isSelected; 
    } 

    public String getFruitName() { 
     return fruitName; 
    } 

    public void setFruitName(String fruitName) { 
     this.fruitName = fruitName; 
    } 

    public boolean isSelected() { 
     return isSelected; 
    } 

    public void setSelected(boolean isSelected) { 
     this.isSelected = isSelected; 
    } 


} 
相關問題