2016-04-22 29 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); 

     }