2016-04-22 2 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

Его лучше добавить тег к просмотру в GetView внутри ListViewAdapter, потому что позже, если изменить позиции в array.It оленьей кожи эффекте метод

В 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); 

     }