0

在我的應用程序中,我實現了ListView。 現在我想它設置爲像這樣:如果我選擇特定指數,它應該保持爲選定。 ans顯示爲ListView。 如果我選擇另一個索引,那麼現在新索引應該保持爲選定狀態。如何保持選中並突出顯示的listView索引?

編輯

意味着我要設置爲所選指數應繼續作爲選擇,直到我選擇另一所強調的。但不喜歡多選。

那麼怎麼辦呢?

請幫我了點。 我已經實現了ListView像下面的代碼:

phonemesListView = (ListView) findViewById(R.id.phonemsListView); 
private String[] Phonemes_List = new String[]{"P","B","T","D","K","G","N","M","ING","TH v","TH vl","F","V","S","Z","SH","CH","J","L","R rf","R b"}; 

phonemesListView.setAdapter(new ArrayAdapter<String>(this,R.layout.phonemes_list_row, R.id.phonemes,Phonemes_List)); 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,final int Position,long id) { 
     phonemsText.setText(Phonemes_List[Position]); 
     Toast.makeText(getApplicationContext(), "Phonems: "+Phonemes_List[Position], Toast.LENGTH_SHORT).show(); 
//  view.setBackgroundColor(Color.RED); 
//  phonemesListView.setBackgroundColor(Color.BLUE); 
     jumposition = Position;    
     int temp = 0;    
     if(jumpCount == -1){     
      view.setBackgroundColor(Color.BLUE);     
      jumpCount = jumposition;     
      JumpView = view;     
      temp = 1;    
     }    
     if(temp == 0) {     
      if(jumpCount == jumposition) {      
       view.setBackgroundColor(Color.BLUE);      
       JumpView = view;     
      }     
      else{      
       JumpView.setBackgroundColor(Color.TRANSPARENT);      
       view.setBackgroundColor(Color.BLUE);      
       jumpCount = jumposition;      
       JumpView = view;     
      }    
     } 
    } 

感謝。

+0

這篇文章可以給你一些有識之士http://stackoverflow.com/questions/3825645/android-listview-with-multiple-select-and-custom-adapter並嘗試listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); :) – 2012-01-17 12:43:48

+0

@SergeyBenner:請參閱更新的問題。 – 2012-01-17 12:57:26

回答

2

你可以只保存從數據持有人所使用,以填充您的ListView選擇的位置。然後,您可以使用ListView的setSelection(position)屬性來設置選定的位置,只要您想要保持選定狀態。

+0

謝謝lalit。但我想要的是,選定的列表索引應該保持高位。 – 2012-01-17 13:08:13

+0

你可能需要實現OnScrollListener並在那裏設置你的項目,但有一個說明'android listview在屏幕上不可見時回收列表中的項目「。所以任何不可見的東西都是空的。「和有關該信息http://stackoverflow.com/questions/4156217/android-listview-onscroll-question – 2012-01-17 13:14:24

+0

@Lalit:請參閱我的更新問題。 – 2012-01-17 13:19:39

0

你可以有一個在ListViewOnItemClickListener更新onItemClick選擇的音素的列表,並呼籲他們adapter.notifyDataSetChanged()所以列表重新粉刷。

在適配器的getView方法,你可以更改的項目背景,如果音素中選擇音素的列表。

問候。

+0

請參閱更新後的問題 – 2012-01-17 12:57:35

+0

@iDroidExplorer您正在檢查模擬器還是移動設備內部。我已經檢查了上面的代碼沒有發現錯誤...你能告訴我什麼是確切的問題。 – 2012-01-19 10:53:15

1
First Create the List view by using the Base adapter : As Follows Create two layout files and One java file : 

    main.xml 
    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="#FFFFFF"> 
     <ListView 
      android:id="@+id/listviewText" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:cacheColorHint="#FFFFFF"></ListView> 
    </LinearLayout> 

    textview.xml 
    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:id="@+id/textview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:textSize="15dip" 
       android:focusable="false"   
></TextView> 

    </LinearLayout> 

    Activity code is 

    package com.pac.marico; 


import java.util.ArrayList; 



import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.BaseAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 

public class ListViewColor extends Activity { 
    /** Called when the activity is first created. */ 
    ArrayList<String> arrayList; 
    Listviewlistneer listviewlistneer; 
    ListView listView; 

    int jumposition; 
    int jumpCount = -1; 
    View JumpView = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     listView = (ListView)findViewById(R.id.listviewText); 
     arrayList = new ArrayList<String>(); 

     arrayList.add("ABC"); 
     arrayList.add("XYZ"); 
     arrayList.add("PQR"); 
     arrayList.add("ABC"); 
     arrayList.add("XYZ"); 
     arrayList.add("PQR"); 
     arrayList.add("ABC"); 
     arrayList.add("XYZ"); 
     arrayList.add("PQR"); 
     arrayList.add("ABC"); 
     arrayList.add("XYZ"); 
     arrayList.add("PQR"); 
     arrayList.add("ABC"); 
     arrayList.add("XYZ"); 
     arrayList.add("PQR"); 
     arrayList.add("ABC"); 
     arrayList.add("XYZ"); 
     arrayList.add("PQR"); 
     arrayList.add("ABC"); 
     arrayList.add("XYZ"); 
     arrayList.add("PQR"); 
     arrayList.add("ABC"); 
     arrayList.add("XYZ"); 
     arrayList.add("PQR"); 

     ListviewAdapter listviewAdapter = new ListviewAdapter(); 
     listView.setAdapter(listviewAdapter); 

     listviewlistneer = new Listviewlistneer(); 

    } 

    class ListviewAdapter extends BaseAdapter 
    { 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return arrayList.size(); 
     } 

     @Override 
     public Object getItem(int arg0) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     @Override 
     public long getItemId(int arg0) { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

     @Override 
     public View getView(int position, View view, ViewGroup parent) { 

      View rowView = view; 
      Viewholder viewholder = null; 


      if(rowView == null) 
      { 
       LayoutInflater layoutInflater = LayoutInflater.from(ListViewColor.this); 
       rowView = layoutInflater.inflate(R.layout.textview, null); 

       viewholder = new Viewholder(); 
       viewholder.textView = (TextView)rowView.findViewById(R.id.textview); 

       rowView.setTag(viewholder); 
      } 
      else 
      { 
       viewholder = (Viewholder)rowView.getTag(); 
      } 

      viewholder.textView.setTag(position); 
      viewholder.textView.setText(arrayList.get(position)); 


      if(jumpCount == position) 
      { 
       JumpView = rowView; 
          rowView.setBackgroundColor(Color.RED); 
        } 
      else 
      { 
       rowView.setBackgroundColor(Color.TRANSPARENT); 
        } 

      listView.setOnItemClickListener(listviewlistneer); 
      return rowView; 
     } 
    } 

    class Listviewlistneer implements OnItemClickListener 
    { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position,long id) { 

      jumposition = position; 
      int temp = 0; 

      if(jumpCount == -1) 
      { 
       view.setBackgroundColor(Color.RED); 

       jumpCount = jumposition; 
       JumpView = view; 

       temp = 1; 
      } 

      if(temp == 0) 
      { 
       if(jumpCount == jumposition) 
       { 
        view.setBackgroundColor(Color.RED); 
        JumpView = view; 
       } 
       else 
       { 
        JumpView.setBackgroundColor(Color.TRANSPARENT); 
        view.setBackgroundColor(Color.RED); 

        jumpCount = jumposition; 
        JumpView = view; 
       } 
      } 
     } 

    } 

    class Viewholder 
    { 
     TextView textView; 
    } 
} 

現在就試試吧。搜索和拉我的頭髮了幾天之後

+0

好的,讓我試試看。 – 2012-01-19 10:12:20

+0

是的,這是我想要的但仍然存在一些問題。雖然我正在查看列表視圖然後有牀出現。而當我選擇一個,然後我可以選擇另一個索引。現在有兩個索引被選中。我不想要這樣。 – 2012-01-19 10:47:57

+0

如果您將顏色設置爲onItem clic,那麼爲什麼我的代碼無法使用?請參考它並讓我知道。 – 2012-01-19 10:49:19

0

我剛剛發現activatedBackgroundIndicator也是ActionBarSherlock造型系統中可用。其中大部分需要在ICS開發和支持向後兼容性,使用ActionBarSherlock的開發者,因此使用ActionBarSherlock是最cases.So而不是使用android:background="?activatedBackgroundIndicator"將前11給android的版本錯誤,只要用一個很好的選擇:android:background="?activatedBackgroundIndicator"

這裏是例子xmle代碼:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
    //note the activatedBackgroundIndicator 
android:background="?activatedBackgroundIndicator" 
android:minHeight="?android:attr/listPreferredItemHeight" 
android:paddingBottom="2dip" 
android:paddingTop="2dip" > 

<TextView 
    android:id="@+id/text1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:paddingLeft="6dip" 
    android:paddingRight="6dip" 
    android:textSize="15sp" /> 

<TextView 
    android:id="@+id/text2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:paddingRight="5dip" 
    android:textSize="20dip" /> 
    </LinearLayout> 
相關問題