Один listview в XML и два arraylist в java-файле.
одно представление списка в xml - файле и два списка arraylist используются в java-классе, как получить значение при длинном щелчке элемента в представлении списка из 2-го arraylist corrosponds в первый aarraylist.(как и контактный номер и имя контакта, только имя контакта будет отображаться в виде списка, и когда вы долго нажимаете на имя, контекстное меню покажет 3 варианта вызова, SMS и удаления... при нажатии на кнопку вызова будет запущена функция телефонного звонка, а также для sms и кнопки удаления ).
package com.example.optionmenu; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.net.Uri; import android.os.Bundle; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { ArrayList<String> name = new ArrayList<String>(); ArrayList<String> phonenumber = new ArrayList<String>(); ArrayAdapter<String> adapter; ListView listcon; String corrosphonenumber; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listcon=findViewById(R.id.listView); name.add("Rahul"); name.add("Ishan"); name.add("Manoj"); name.add("Modi"); phonenumber.add("1234567890"); phonenumber.add("0987654321"); phonenumber.add("1111111111"); phonenumber.add("2222222222"); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, name); listcon.setAdapter(adapter); registerForContextMenu(listcon); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { if(v.getId()==R.id.listView){ AdapterView.AdapterContextMenuInfo info=(AdapterView.AdapterContextMenuInfo) menuInfo; } super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu,menu); menu.setHeaderTitle("Choose Action"); } @Override public boolean onContextItemSelected(MenuItem item){ if(item.getItemId()==R.id.call){ Toast.makeText(getApplicationContext(),"Calling",Toast.LENGTH_LONG).show(); } else if(item.getItemId()==R.id.sms){ Toast.makeText(getApplicationContext(),"sending sms",Toast.LENGTH_LONG).show(); }else if(item.getItemId()==R.id.dlt) { Toast.makeText(getApplicationContext(), "delete", Toast.LENGTH_LONG).show(); } else { return false; } return true; } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater=getMenuInflater(); menuInflater.inflate(R.menu.menu2,menu); menu.add("Add Contacts").setIcon( R.drawable.iii); return true; } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { Intent intent=new Intent(MainActivity.this,addContact.class); startActivityForResult(intent,1); return super.onOptionsItemSelected(item); /*phoneNumber = editEnterNo.getText().toString(); Intent callIntent = new Intent(Intent.ACTION_CALL); callIntent.setData(Uri.parse("tel:" + phoneNumber));*/ } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); } }
Что я уже пробовал:
я путаю, как получить доступ к элементам и установить телефонный звонок на соответствующий номер
David Crow
В обработчике длинных кликов будет передан параметр position. Используйте это как индекс в name
и phonenumber
массивы.