2017-11-17 92 views
0

我想知道是否有可能在列表視圖中有可點擊的項目開始一個新的活動或意圖基於內容的項目而不是位置。每個特定的項目都需要具有特定的具體操作,我希望我的應用能夠將項目從列表視圖中的頂部或底部移動或將它們添加到新列表中。如果物品是靜止的,那麼將動作放在物品的位置上就可以正常工作,但由於物品會移動,所以會產生問題。因此,根據項目內容(此時的字符串)採取行動是最好的選擇,因爲它可以在項目所在的位置工作。基於內容而不是位置在某些項目的列表視圖中開始一個新的活動或意圖

目前,我使用的是if (item_position==1),if (item_position==2),如果(item_position==3)等。下面是引用的完整代碼:

public class MainActivity extends AppCompatActivity { 

    ArrayList<String> selectedItems; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     selectedItems = new ArrayList<String>(); 
     ListView chl = (ListView) findViewById(R.id.colorselector); 
     chl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
     String[] items = {"Blue", "Green", "Yellow", "White", "Black", "Grey"}; 
     Adapter adapter=new Adapter(this,items); 
     chl.setAdapter(adapter); 

     chl.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

       int item_position=i; 
       if (item_position==1){ 

       } 
+0

我想你可能需要有關的ListView一些更多的教程。我的博客關於listview:http://programandroidlistview.blogspot.com/。希望有所幫助! –

回答

0

試試這個代碼

public class MainActivity extends AppCompatActivity { 

ArrayList<String> selectedItems; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    selectedItems = new ArrayList<String>(); 
    ListView chl = (ListView) findViewById(R.id.colorselector); 
    chl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    String[] items = {"Blue", "Green", "Yellow", "White", "Black", "Grey"}; 
    Adapter adapter=new Adapter(this,items); 
    chl.setAdapter(adapter); 

    chl.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

      if(view instance of TextView){ 
       TextView textView=(TextView)view; 
       String data=textView.getText(); 

       if(data.equal("Blue")){ 


       }else if(data.equals("Green")){ 


       } 

      } 




     }};  
+0

謝謝,但我收到錯誤「不兼容類型」。必需:字符串,找到:字符序列。我改變了它,但它不起作用 - 當我點擊項目 – Fgf567

+0

textView.getText()。toString(); –

+0

現在它說不能解決方法「等於」 – Fgf567

0

可以使用這樣的檢索來自適配器點擊項目:

String clickedItem = adapterView.getAdapter().getItem(position); 

我假設您的適配器所持有的物品是String秒。您可能需要將項目轉換爲String

String clickedItem = (String) adapterView.getAdapter().getItem(position); 

或鑄Adapter您的具體實現適配器:

String clickedItem = ((MyAdapter)adapterView.getAdapter()).getItem(position); 
+0

@ Fgf567看起來該項目是「CharSequence」類型。你只需要將它轉換爲'CharSequence'而不是'String',(例如:'CharSequence clickedItem =(CharSequence)adapterView.getAdapter()。getItem(position);') – Titus

相關問題