Android 获取ListAdapter类中的mEdit引用
这是我的自定义列表适配器类:Android 获取ListAdapter类中的mEdit引用,android,listview,android-edittext,onclicklistener,listadapter,Android,Listview,Android Edittext,Onclicklistener,Listadapter,这是我的自定义列表适配器类: class MyAdapter extends ArrayAdapter<String> { private int resourceId; String name=""; String phone; private ArrayList<String> sites = null; private Context context; private static class ViewHolde
class MyAdapter extends ArrayAdapter<String> {
private int resourceId;
String name="";
String phone;
private ArrayList<String> sites = null;
private Context context;
private static class ViewHolder{
TextView RideDetails;
EditText mEdit;
}
public MyAdapter(Context context, int resource, ArrayList<String> objects,String phone) {
super(context, resource, objects);
this.context = context;
this.resourceId = resource;
this.sites = objects;
this.phone=phone;
}
@Override
public String getItem(int position) {
return sites.get(position);
}
@Override
public int getCount() {
return sites.size();
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
name = getItem(position);
View view = convertView;
if (view == null) {
LayoutInflater inflater = LayoutInflater.from(getContext());
view = inflater.inflate(R.layout.home_resource, parent, false);
}
TextView mTextView = (TextView) view.findViewById(R.id.ridedetails);
mTextView.setText(name);
Button mButton = (Button) view.findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("Name",name);
String ridetrackno=name.substring(name.indexOf(":")+1,name.indexOf("Source")-2);
EditText mEdit;
mEdit = (EditText) view.findViewById(R.id.PriceQuotation);
String fare=mEdit.getText().toString();
String myUrl=".....API URL....."+phone+"/"+ridetrackno+"/"+fare;
Log.d("URL",myUrl);
HttpGetRequest getRequest = new HttpGetRequest();
try{
String result = getRequest.execute(myUrl).get();
Log.d("Details:",result);
}
catch(Exception e)
{
e.printStackTrace();
}
}
});
return view;
}
}
class MyAdapter扩展了ArrayAdapter{
私有资源ID;
字符串名称=”;
字符串电话;
私有ArrayList站点=null;
私人语境;
私有静态类视图持有者{
TextView RideDetails;
编辑文本媒介;
}
公共MyAdapter(上下文上下文、int资源、ArrayList对象、字符串电话){
超级(上下文、资源、对象);
this.context=上下文;
this.resourceId=资源;
这是一个网站=对象;
这个。电话=电话;
}
@凌驾
公共字符串getItem(int位置){
返回站点。获取(位置);
}
@凌驾
public int getCount(){
返回sites.size();
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
name=getItem(位置);
视图=转换视图;
如果(视图==null){
LayoutInflater充气器=LayoutInflater.from(getContext());
视图=充气机。充气(R.layout.home\u资源,父项,false);
}
TextView mTextView=(TextView)view.findViewById(R.id.ridedetails);
mTextView.setText(名称);
Button mButton=(Button)view.findViewById(R.id.Button);
mButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Log.d(“名称”,名称);
String ridetrackno=name.substring(name.indexOf(“:”)+1,name.indexOf(“Source”)-2);
编辑文本媒介;
mEdit=(EditText)view.findviewbyd(R.id.pricequote);
字符串fare=mEdit.getText().toString();
字符串myUrl=“…API URL…”+电话+“/”+ridetrackno+“/”+票价;
Log.d(“URL”,myUrl);
HttpGetRequest getRequest=新的HttpGetRequest();
试一试{
String result=getRequest.execute(myUrl.get();
日志d(“详细信息:”,结果);
}
捕获(例外e)
{
e、 printStackTrace();
}
}
});
返回视图;
}
}
这是我的资源_文件,其中的项通过REST API注入:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="5dip">
<TextView
android:layout_height="wrap_content"
android:text="TextView"
android:layout_width="wrap_content"
android:id="@+id/ridedetails"
android:layout_marginLeft="2dip">
</TextView>
<EditText
android:layout_height="wrap_content"
android:hint="Quote Price"
android:layout_width="wrap_content"
android:id="@+id/PriceQuotation"
android:layout_below="@+id/ridedetails"
android:layout_marginLeft="2dip">
</EditText>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/PriceQuotation"
android:layout_marginStart="61dp"
android:layout_toEndOf="@+id/PriceQuotation"
android:text="Button" />
</RelativeLayout>
列表视图的结构:
每个列表项都由一个TextView(我可以获取其详细信息)、编辑文本(导致异常)和一个简单按钮组成,该按钮的onClick函数已经编写
现在我面临两个问题:
final EditText mEdit = (EditText) view.findViewById(R.id.PriceQuotation);
二,
内部按钮单击侦听器
String vlaue = mTextView.getText().toString();
getView()代码:
final EditText mEdit = (EditText) view.findViewById(R.id.PriceQuotation);
二,
内部按钮单击侦听器
String vlaue = mTextView.getText().toString();
getView()代码:
您需要将
EditText mEdit
从按钮的onClick()事件中取出,或者您需要更改视图的对象名称,如下所示
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
name = getItem(position);
View childView = convertView;
if (childView == null) {
LayoutInflater inflater = LayoutInflater.from(getContext());
childView = inflater.inflate(R.layout.home_resource, parent, false);
}
TextView mTextView = (TextView) childView.findViewById(R.id.ridedetails);
mTextView.setText(name);
Button mButton = (Button) childView.findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText mEdit = (EditText) childView.findViewById(R.id.PriceQuotation);
}
});
}
由于视图
将在内部被称为按钮,因此我们将主视图命名为childView
这不会给您提供NullPointerException
您需要将EditText mEdit
从按钮的onClick()
事件中取出,或者您需要更改视图的对象名称,如下所示
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
name = getItem(position);
View childView = convertView;
if (childView == null) {
LayoutInflater inflater = LayoutInflater.from(getContext());
childView = inflater.inflate(R.layout.home_resource, parent, false);
}
TextView mTextView = (TextView) childView.findViewById(R.id.ridedetails);
mTextView.setText(name);
Button mButton = (Button) childView.findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText mEdit = (EditText) childView.findViewById(R.id.PriceQuotation);
}
});
}
由于视图
将在内部被称为按钮,因此我们将主视图命名为childView
这不会为2提供NullPointerException
。在onClick内
尝试:
String namePos = getItem(position);
ridetrackno=namePos.substring(namePos.indexOf(":")+1,namePos.indexOf("Source")-2);
希望这有助于2。在onClick内
尝试:
String namePos = getItem(position);
ridetrackno=namePos.substring(namePos.indexOf(":")+1,namePos.indexOf("Source")-2);
希望这有帮助谢谢你的帮助。现在我可以获取EditText中设置的文本。请帮我解决第二个问题,无论我点击哪个按钮,列表中的最后一项都会被选中。谢谢你的帮助。现在我可以获取EditText中设置的文本。请帮我解决第二个问题,无论我点击哪个按钮,列表中的最后一项总是被选中。