Android 列表视图´;s项目按钮单击

Android 列表视图´;s项目按钮单击,android,listview,android-listview,listadapter,Android,Listview,Android Listview,Listadapter,在Android上使用Lisview。列表视图的每个项目都有一个按钮,我想在单击每个按钮时打开活动 我的代码是这样的,它可以工作,但我认为有更好的方法来做到这一点 public class Resul extends Fragment{ ImageView vi; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, B

在Android上使用
Lisview
列表视图
的每个项目都有一个
按钮
,我想在单击每个
按钮时打开
活动

我的代码是这样的,它可以工作,但我认为有更好的方法来做到这一点

  public class Resul extends Fragment{



    ImageView vi;
    @Override


    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

            View v= inflater.inflate(R.layout.resul, container, false);
            listview = (ListView) v.findViewById(R.id.lista_resultados_liga);

 new DownloadJSON().execute();
             listview.setOnItemClickListener(new OnItemClickListener() {
                    public void onItemClick(AdapterView<?> parent, View view, int position,
                            long id) {

                        estado = ((TextView) view.findViewById(R.id.estado))
                                .getText().toString();
                        jor = ((TextView) view.findViewById(R.id.jor))
                                .getText().toString();
                        vi = ((ImageView) view.findViewById(R.id.imageView1));



                            vi.setOnClickListener(new View.OnClickListener() {
                                 @Override
                                    public void onClick(View v) {

                                     Intent in = new Intent(getActivity(),
                                          Videos.class);
                                    in.putExtra("id_video", resumen_id);
                                    startActivity(in);

                                    }
                                });

                    }


             }
             });


            return v;
        }


    // DownloadJSON AsyncTask
                private class DownloadJSON extends AsyncTask<Void, Void, Void> {

                    @Override
                    protected void onPreExecute() {
                        //code
                    }

                    @Override
                    protected Void doInBackground(Void... params) {
                        //code
                    }

                    @Override
                    protected void onPostExecute(Void args) {
                        // Locate the listview in listview_main.xml
                        listview = (ListView) getActivity().findViewById(R.id.mylist);
                        // Pass the results into ListViewAdapter.java
                        adapter = new LazyAdapterResul(getActivity(), arraylist);
                        // Set the adapter to the ListView
                        listview.setAdapter(adapter);
                        // Close the progressdialog
                        mProgressDialog.dismiss();
                    }
                }





    }
公共类结果扩展片段{
ImageView vi;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.result,容器,假);
listview=(listview)v.findViewById(R.id.lista_resultados_liga);
新建下载JSON().execute();
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
estado=((TextView)view.findViewById(R.id.estado))
.getText().toString();
jor=((TextView)view.findViewById(R.id.jor))
.getText().toString();
vi=((ImageView)view.findViewById(R.id.imageView1));
vi.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向输入=新意向(getActivity(),
视频(课堂);
in.putExtra(“id\u视频”,resumen\u id);
星触觉(in);
}
});
}
}
});
返回v;
}
//下载JSON异步任务
私有类下载JSON扩展异步任务{
@凌驾
受保护的void onPreExecute(){
//代码
}
@凌驾
受保护的Void doInBackground(Void…参数){
//代码
}
@凌驾
受保护的void onPostExecute(void args){
//在listview_main.xml中找到listview
listview=(listview)getActivity().findViewById(R.id.mylist);
//将结果传递到ListViewAdapter.java中
adapter=newlazyadapterresul(getActivity(),arraylist);
//将适配器设置为ListView
setAdapter(适配器);
//关闭progressdialog
mProgressDialog.disclose();
}
}
}
我的适配器代码,我希望在单击图像活动打开时:

public class LazyAdapterResul extends BaseAdapter {

    // Declare Variables
    Context context;
    LayoutInflater inflater;
    ArrayList<HashMap<String, String>> data;
    ImageLoader imageLoader;
    HashMap<String, String> resultp = new HashMap<String, String>();

    public LazyAdapterResultadosLiga(Context context,
            ArrayList<HashMap<String, String>> arraylist) {
        this.context = context;
        data = arraylist;
        imageLoader = new ImageLoader(context);
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

     public interface MyItemClickListener {
            void onItemClick(View view, int position);
        }

        private MyItemClickListener mItemClickListener;

        public void setMyItemClickListener(MyItemClickListener listener) {
            this.mItemClickListener = listener;
        }

    public View getView(final int position, View convertView, ViewGroup parent) {
        // Declare Variables

        TextView equipo_local, equipo_visitante, estado_video;


        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View itemView = inflater.inflate(R.layout.list_row, parent, false);
        // Get the position
        resultp = data.get(position);

        // Locate the TextViews in listview_item.xml

        jor= (TextView) itemView.findViewById(R.id.jornada);
        estado= (TextView) itemView.findViewById(R.id.estado);
        vi = (ImageView) itemView.findViewById(R.id.imageView1);


        estado.setText(resultp.get(Resul.TAG_ESTADO));
        jor.setText(resultp.get(Resul.TAG_JOR));



        vi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (mItemClickListener != null) {
                    mItemClickListener.onItemClick(view, position);
                }
            }

        });



        return itemView;
    }


}
公共类LazyAdapterResul扩展BaseAdapter{
//声明变量
语境;
充气机;
阵列列表数据;
图像加载器;
HashMap resultp=新的HashMap();
公共LazyAdapterResultadosLiga(上下文,
ArrayList(ArrayList){
this.context=上下文;
数据=数组列表;
imageLoader=新的imageLoader(上下文);
}
@凌驾
public int getCount(){
返回data.size();
}
@凌驾
公共对象getItem(int位置){
返回null;
}
@凌驾
公共长getItemId(int位置){
返回0;
}
公共接口MyItemClickListener{
void onItemClick(视图,int位置);
}
私有MyItemClickListener mItemClickListener;
公共无效设置MyItemClickListener(MyItemClickListener listener){
this.mItemClickListener=侦听器;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//声明变量
TextView设备本地、设备访问、estado视频;
充气器=(充气器)上下文
.getSystemService(上下文布局\充气机\服务);
视图项视图=充气机。充气(R.layout.list\u行,父项,false);
//获得职位
resultp=data.get(位置);
//在listview_item.xml中找到文本视图
jor=(TextView)itemView.findViewById(R.id.jornada);
estado=(TextView)itemView.findViewById(R.id.estado);
vi=(ImageView)itemView.findViewById(R.id.imageView1);
setText(resultp.get(resl.TAG_estado));
jor.setText(resultp.get(resl.TAG_jor));
vi.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
if(mItemClickListener!=null){
mItemClickListener.onItemClick(视图、位置);
}
}
});
返回项目视图;
}
}

使用适配器中的接口进行尝试,如下所示:

public class ListViewAdapter{    
    public interface MyItemClickListener {
        void onItemClick(View view, int position);
    }

    private MyItemClickListener mItemClickListener;

    public void setMyItemClickListener(MyItemClickListener listener) {
        this.mItemClickListener = listener;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Find your image view and add clicklistener

        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view, int position) {
                if (mItemClickListener != null) {
                    mItemClickListener.onItemClick(view, position);
                }
            }
        });
        return convertView;
    }
}
// Pass the results into ListViewAdapter.java
adapter = new LazyAdapterResultadosLiga(getActivity(), arraylist);
// add click listener
adapter.setMyItemClickListener(new MyItemClickListener(){
            @Override
            public void onItemClick(View view, int position) {
                Intent in = new Intent(getActivity(), MyOtherActivity.class);
                startActivity(in);
            }
});
// Set the adapter to the ListView
listview.setAdapter(adapter);
现在,您可以在活动中设置clicklistener,如下所示:

public class ListViewAdapter{    
    public interface MyItemClickListener {
        void onItemClick(View view, int position);
    }

    private MyItemClickListener mItemClickListener;

    public void setMyItemClickListener(MyItemClickListener listener) {
        this.mItemClickListener = listener;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Find your image view and add clicklistener

        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view, int position) {
                if (mItemClickListener != null) {
                    mItemClickListener.onItemClick(view, position);
                }
            }
        });
        return convertView;
    }
}
// Pass the results into ListViewAdapter.java
adapter = new LazyAdapterResultadosLiga(getActivity(), arraylist);
// add click listener
adapter.setMyItemClickListener(new MyItemClickListener(){
            @Override
            public void onItemClick(View view, int position) {
                Intent in = new Intent(getActivity(), MyOtherActivity.class);
                startActivity(in);
            }
});
// Set the adapter to the ListView
listview.setAdapter(adapter);

在列表视图适配器上编写onclick代码。但是我可以从列表视图适配器打开活动吗?怎么用?Intent in=新的Intent(getActivity(),MyOtherActivity.class);星触觉(in)@Elena use Intent in=new Intent(getContext(),MyOtherActivity.class);星触觉(in);您最好创建一个自定义ListView并为它创建一个单独的自定义适配器类是的,使用自定义适配器进行其他类型的实现工作,但是如果我想将.putExtra(“estado”,estado)中的“estado”这样的“estado”传递给这个新活动;如何从列表项中获取它?非常感谢你这件很酷的事。你在我的McClick方法中占有一席之地。您可以使用它进行操作,也可以使用该方法传递的视图(项)查找一些视图。它回答了你的问题吗?那么请把它标上,然后