Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取ListAdapter类中的mEdit引用_Android_Listview_Android Edittext_Onclicklistener_Listadapter - Fatal编程技术网

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函数已经编写

现在我面临两个问题:

  • mEdit Reference:单击列表项中的按钮时,当我试图获取在编辑文本中输入的文本时,程序失败,出现空指针异常

  • 始终拾取最后一个列表项:无论单击哪个按钮,都只返回最后一个文本视图的内容

  • 当您试图在按钮单击侦听器中获取edittext时,适配器将一次获取getView方法中的所有视图
  • 在按钮外写这行,单击listener

    final EditText mEdit   = (EditText) view.findViewById(R.id.PriceQuotation);
    
    二,

    内部按钮单击侦听器

    String vlaue = mTextView.getText().toString();
    
    getView()代码:

  • 当您试图在按钮单击侦听器中获取edittext时,适配器将一次获取getView方法中的所有视图
  • 在按钮外写这行,单击listener

    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中设置的文本。请帮我解决第二个问题,无论我点击哪个按钮,列表中的最后一项总是被选中。