2016-04-22 30 views
0

你好我正在試圖設置我的onclicklistner到我的列表視圖,以便我可以打開一個意圖範圍,例如我希望用戶能夠按下其中的一個選項名單,它打了電話或打開一個網站等...目前,我有這個設置工作找到時,只是鏈接到一個簡單的按鈕,但現在我想整理我的顯示一點點。將ListView onItemClickListener設置爲特定的意圖

我已經顯示了下面的代碼,顯示我的列表視圖並顯示它的填充,我現在只需要弄清楚如何添加意圖。我可以根據位置使用它,還是需要添加標籤?任何例子將不勝感激,我會繼續看,如果我找到答案,我會更新我的帖子。

public class ContactUs extends AppCompatActivity { 

ListView contactUs; 

String[] feature= {"Phone", "Email", "Website", "Opening Times"}; 
String[] click = {"click", "click", "click", "click", "click"}; 

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



    contactUs = (ListView)findViewById(R.id.contactUsListView); 




    ListViewAdapter adapter = new ListViewAdapter(this,feature,click); 
    contactUs.setAdapter(adapter); 


    contactUs.setOnItemClickListener(new Itemlist()); 

} 

class Itemlist implements AdapterView.OnItemClickListener { 


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


    } 



    } 
} 

小塊的代碼,我目前正在與一個叫呼叫按鈕,我想傳遞的第一個項目在我的列表視圖

call.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:123456789")); 

      if (ActivityCompat.checkSelfPermission(getBaseContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 

       return; 
      } 
      startActivity(callIntent); 


     } 
    }); 

回答

0

如果你不改變這種使用在運行時可以使用開關盒取決於位置。這樣

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    switch (position) { 
     case 0: 
      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:123456789")); 

      if (ActivityCompat.checkSelfPermission(getBaseContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
       break; 
      } 
      startActivity(callIntent); 
      break; 
     case 1: 
      // Add the intent of choice 
      break; 
     case 2: 
      // Add the intent of choice 
      break; 
     case 3: 
      // Add the intent of choice 
      break; 
     case 4: 
      // Add the intent of choice 
      break; 
    } 

} 
0
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

switch (position) { 
    case 0: 
     //Add intent for Phone   
     break; 
    case 1: 
     //Add intent for Email 
     break; 
    case 2: 
     //Add intent for Website 
     break; 
    case 3: 
     //Add intent for Opening Time 
     break; 

    } 

} 
+0

謝謝你的答案,但我發現了一個方法和將更新我的問題 – james

0

其更好的東西,因爲以後如果更改array.It犯規效應位置標記添加到裏面ListViewAdapter在getView視圖

在ListViewAdapter,在getView()方法添加標籤存在,並在活動中檢索,這樣就可以通過view.getTag(使用),並在開關的情況下使用,並且做的@Max Zavernutiy說

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

     if (contactUs.getAdapter().getItem(position).equals("Phone")){ 



      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:123456789")); 

      if (ActivityCompat.checkSelfPermission(getBaseContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 

       return; 
      } 

      startActivity(callIntent); 

     }