2016-04-27 2 views
2

Ich habe eine ArrayList mit Baumelementen darin (icon, text(name), text(phonenumber)). Ich möchte zwei Dinge tun,Wie telefoniere ich von einem Element der arraylist onclick?

1) machen insgesamt ein Element der Liste klickbare

2) Anruf tätigen, um diese Zahl

Onclick

Jetzt weiß ich, ich brauche onclicklistener zu verwenden, aber wie implementieren es zu meinem Code? Mein Haupt und Adapter

public class MainActivity extends ListActivity { 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.target_item); 


    // if extending Activity 
    //setContentView(R.layout.activity_main); 

    // 1. pass context and data to the custom adapter 
    MyAdapter adapter = new MyAdapter(this, generateData()); 

    // if extending Activity 2. Get ListView from activity_main.xml 
    //ListView listView = (ListView) findViewById(R.id.listview); 

    // 3. setListAdapter 
    //listView.setAdapter(adapter); if extending Activity 
    setListAdapter(adapter); 
    } 

private ArrayList<Model> generateData() { 
    ArrayList<Model> models = new ArrayList<Model>(); 
    // here are elements of the arraylist header & next are list's elements 
    models.add(new Model("[text]")); 
    models.add(new Model(R.drawable.[icon], "[text]", "**[text(number)]**")); 
    models.add(new Model(R.drawable.[icon2], "[text2]", "**[text(number2)]**")); 
    return models; 
} 
} 

public class MyAdapter extends ArrayAdapter<Model> { 

private final Context context; 
private final ArrayList<Model> modelsArrayList; 


public MyAdapter(Context context, ArrayList<Model> modelsArrayList) { 

    super(context, R.layout.target_item, modelsArrayList); 

    this.context = context; 
    this.modelsArrayList = modelsArrayList; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    // 1. Create inflater 
    LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    // 2. Get rowView from inflater 

    View rowView = null; 
    if(!modelsArrayList.get(position).isGroupHeader()){ 
     rowView = inflater.inflate(R.layout.target_item, parent, false); 

     // 3. Get icon,title & counter views from the rowView 
     ImageView imgView = (ImageView) rowView.findViewById(R.id.item_icon); 
     TextView titleView = (TextView) rowView.findViewById(R.id.item_title); 
     TextView counterView = (TextView) rowView.findViewById(R.id.item_counter); 

     // 4. Set the text for textView 
     imgView.setImageResource(modelsArrayList.get(position).getIcon()); 
     titleView.setText(modelsArrayList.get(position).getTitle()); 
     counterView.setText(modelsArrayList.get(position).getCounter()); 

    } 
    else{ 
     rowView = inflater.inflate(R.layout.group_header_item, parent, false); 
     TextView titleView = (TextView) rowView.findViewById(R.id.header); 
     titleView.setText(modelsArrayList.get(position).getTitle()); 

    } 

    // 5. retrn rowView 
    return rowView; 
} 
} 

Antwort

0

Versuchen this-

listView.setOnItemClickListener(new OnItemClickListener() { 
@Override 
public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
     makeCall("Phone Number goes here.."); 
    } 
}); 

public void makeCall(String callTo) { 
    Intent callIntent = new Intent(Intent.ACTION_DIAL); 
    callIntent.setData(Uri.parse("tel:" + callTo)); 
    startActivity(callIntent); 
} 
0

In Sie MyAdapter.class Änderungen wie

zu machen
rowview.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:0377778888")); 
      // hear set your array position vise set mobile nmber 
      startActivity(callIntent); 
     } 
    }); 
Verwandte Themen