[英]unable to use intent in coustomlistview android
i am using a coustomlist view to get defult data and i am not able to set the ACTION_CALL intent inside customlistview i am using fallowing code.and when ever a view is clickd i want "number" variable to store the current view's phonenumber and start ACTION_CALL intent. 我正在使用coustomlist视图获取详细数据,而我无法在customlistview中设置ACTION_CALL意图我正在使用休闲代码。每当单击视图时,我都希望使用“ number”变量来存储当前视图的电话号码并启动ACTION_CALL意图。
public class DataModel {
private String phonenumber;
private int anInt;
private double aDouble;
private String OtherData;
public DataModel(String phonenumber, int anInt, double aDouble, String otherData) {
this.phonenumber = phonenumber;
this.anInt = anInt;
this.aDouble = aDouble;
OtherData = otherData;
}
public String getphonenumber() {
return phonenumber;
}
public void setphonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}
public int getAnInt() {
return anInt;
}
public void setAnInt(int anInt) {
this.anInt = anInt;
}
public double getaDouble() {
return aDouble;
}
public void setaDouble(double aDouble) {
this.aDouble = aDouble;
}
public String getOtherData() {
return OtherData;
}
public void setOtherData(String otherData) {
OtherData = otherData;
}
}
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
/**
* Created with IntelliJ IDEA.
* User: Shahab
* Date: 8/22/12
* Time: 11:37 AM
* To change this template use File | Settings | File Templates.
*/
public class CustomAdapter extends BaseAdapter {
private static final String TAG = CustomAdapter.class.getSimpleName();
ArrayList<DataModel> listArray;
public CustomAdapter() {
listArray = new ArrayList<DataModel>(5);
listArray.add(new DataModel("7760576191", 5, 1.8, "Java"));
listArray.add(new DataModel("7760576191", 10, 2.8, "Python"));
listArray.add(new DataModel("7760576191", 15, 3.8, "Django"));
listArray.add(new DataModel("7760576191", 20, 4.8, "Groovy"));
listArray.add(new DataModel("7760576191", 25, 5.8, "Maven"));
}
@Override
public int getCount() {
return listArray.size(); // total number of elements in the list
}
@Override
public Object getItem(int i) {
return listArray.get(i); // single item in the list
}
@Override
public long getItemId(int i) {
return i; // index number
}
@Override
public View getView(int index, View view, final ViewGroup parent) {
if (view == null) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
view = inflater.inflate(R.layout.single_list_item, parent, false);
}
final DataModel dataModel = listArray.get(index);
TextView textView = (TextView) view.findViewById(R.id.tv_string_data);
textView.setText(dataModel.getphonenumber());
Button button = (Button) view.findViewById(R.id.btn_number_data);
button.setText("" + dataModel.getAnInt());
textView = (TextView) view.findViewById(R.id.tv_double_data);
textView.setText("" + dataModel.getaDouble());
// button click listener
// this chunk of code will run, if user click the button
// because, we set the click listener on the button only
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "string: " + dataModel.getphonenumber());
Log.d(TAG, "int: " + dataModel.getAnInt());
Log.d(TAG, "double: " + dataModel.getaDouble());
Log.d(TAG, "otherData: " + dataModel.getOtherData());
Toast.makeText(parent.getContext(), "button clicked: " + dataModel.getAnInt(), Toast.LENGTH_SHORT).show();
}
});
// if you commented out the above chunk of code and
// activate this chunk of code
// then if user click on any view inside the list view (except button)
// this chunk of code will execute
// because we set the click listener on the whole view
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "string: " + dataModel.getphonenumber());
Log.d(TAG, "int: " + dataModel.getAnInt());
Log.d(TAG, "double: " + dataModel.getaDouble());
Log.d(TAG, "otherData: " + dataModel.getOtherData());
String number=dataModel.getphonenumber().toString();
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+number));
startActivity(callIntent);
Toast.makeText(parent.getContext(), "view clicked: " + dataModel.getOtherData(), Toast.LENGTH_SHORT).show();
}
});
return view;
}
}
import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends Activity { private static final String TAG = MainActivity.class.getSimpleName(); /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView = (ListView) findViewById(R.id.list_data); CustomAdapter customAdapter = new CustomAdapter(); listView.setAdapter(customAdapter); // we have added a button on our list view // for that reason, list view on item click wont get the event // we need to implement click listener in custom adapter // this method will work if we do not add button on our list view // listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { // @Override // public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { // // DataModel dataModel = (DataModel) adapterView.getItemAtPosition(i); // // Log.d(TAG, "string: " + dataModel.getName()); // Log.d(TAG, "int: " + dataModel.getAnInt()); // Log.d(TAG, "double: " + dataModel.getaDouble()); // Log.d(TAG, "otherData: " + dataModel.getOtherData()); // // Toast.makeText(MyActivity.this, "Item Clicked: " + i, Toast.LENGTH_SHORT).show(); // } // }); } }
For starting an activity from baseadpater you have to do like this : 要从baseadpater启动活动,您必须执行以下操作:
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+number));
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(callIntent );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.