代码之家  ›  专栏  ›  技术社区  ›  Darksymphony

Android-JSON中的可点击项目

  •  1
  • Darksymphony  · 技术社区  · 8 年前

    根据本教程,我使用fragment创建了一个简单的JSON列表 http://androidbeginnerstutorial.blogspot.sk/2015/06/json-parsing-using-fragment-with.html

    它工作正常,但我希望列表中的所有项目都可以单击,因此单击后,会出现另一个页面,其中包含来自同一个JSON的更多信息。

    我试图实现ActorAdapter。java内部

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

    我创造了这样的东西

     itemView.setOnClickListener(new OnClickListener() {
    Intent intent = new Intent(context, SingleitemView.class);
    })
    

    但不确定还有什么可以让它工作。

    你能帮帮我吗?非常感谢。

    这是我在ActorAdapter的代码。java:

    import java.io.InputStream;
    import java.util.ArrayList;
    
    import java.util.HashMap;
    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.AsyncTask;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.ListView;
    
    public class ActorAdapter extends ArrayAdapter<Actors> {
        ArrayList<Actors> actorList;
        LayoutInflater vi;
        int Resource;
        ViewHolder holder;
    
    
        public ActorAdapter(Context context, int resource, ArrayList<Actors> objects) {
            super(context, resource, objects);
            vi = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            Resource = resource;
            actorList = objects;
        }
    
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // convert view = design
            View v = convertView;
            if (v == null) {
                holder = new ViewHolder();
                v = vi.inflate(Resource, null);
                holder.imageview = (ImageView) v.findViewById(R.id.ivImage);
                holder.tvName = (TextView) v.findViewById(R.id.tvName);
                holder.tvDescription = (TextView) v.findViewById(R.id.tvDescriptionn);
                holder.tvDOB = (TextView) v.findViewById(R.id.tvDateOfBirth);
                holder.tvCountry = (TextView) v.findViewById(R.id.tvCountry);
                holder.tvHeight = (TextView) v.findViewById(R.id.tvHeight);
                holder.tvSpouse = (TextView) v.findViewById(R.id.tvSpouse);
                holder.tvChildren = (TextView) v.findViewById(R.id.tvChildren);
                v.setTag(holder);
            } else {
                holder = (ViewHolder) v.getTag();
            }
            holder.imageview.setImageResource(R.drawable.ic_launcher);
            new DownloadImageTask(holder.imageview).execute(actorList.get(position).getImage());
            holder.tvName.setText(actorList.get(position).getName());
            holder.tvDescription.setText(actorList.get(position).getDescription());
            holder.tvDOB.setText("B'day: " + actorList.get(position).getDob());
            holder.tvCountry.setText(actorList.get(position).getCountry());
            holder.tvHeight.setText("Height: " + actorList.get(position).getHeight());
            holder.tvSpouse.setText("Spouse: " + actorList.get(position).getSpouse());
            holder.tvChildren.setText("Children: " + actorList.get(position).getChildren());
    
    
    
       v.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
    
            Intent intent = new Intent(view.getContext(), SingleitemView.class);
            intent.putExtra("name", "XXXXXX");
            view.getContext().startActivity(intent);
        }
    });
    
            return v;
    
        }
    
    
    
        static class ViewHolder {
            public ImageView imageview;
            public TextView tvName;
            public TextView tvDescription;
            public TextView tvDOB;
            public TextView tvCountry;
            public TextView tvHeight;
            public TextView tvSpouse;
            public TextView tvChildren;
    
        }
    
        private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
            ImageView bmImage;
    
            public DownloadImageTask(ImageView bmImage) {
                this.bmImage = bmImage;
            }
    
            protected Bitmap doInBackground(String... urls) {
                String urldisplay = urls[0];
                Bitmap mIcon11 = null;
                try {
                    InputStream in = new java.net.URL(urldisplay).openStream();
                    mIcon11 = BitmapFactory.decodeStream(in);
                } catch (Exception e) {
                    Log.e("Error", e.getMessage());
                    e.printStackTrace();
                }
                return mIcon11;
            }
    
            protected void onPostExecute(Bitmap result) {
    
                bmImage.setImageBitmap(result);
            }
    
        }
    }
    

    和SingleitemView。java-这应该是单击后的新活动

        import android.app.Activity;
            import android.content.Intent;
            import android.os.Bundle;
            import android.widget.TextView;
    
    
    public class SingleitemView extends Activity {
    // Declare Variables
    String name;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the view from singleitemview.xml
        setContentView(R.layout.singleitemview);
    
        Intent i = getIntent();
        // Get the result of rank
        name = i.getStringExtra("name");
    
    
        // Locate the TextViews in singleitemview.xml
        TextView txtname = (TextView) findViewById(R.id.name);
    
    
        // Set results to the TextViews
        txtname.setText(name);
    
    }
    

    }

    3 回复  |  直到 8 年前
        1
  •  0
  •   Goku Farhana Naaz Ansari    8 年前

    itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
    
                Intent intent = new Intent(view.getContext(), SingleitemView.class);                               
                intent.putExtra("name", actorList.get(position).getName());
                view.getContext().startActivity(intent);
            }
        });
    
        2
  •  0
  •   ADM    8 年前

    您似乎希望在单击项目时打开活动:

    itemView.setOnClickListener(new OnClickListener() {
    Intent intent = new Intent(context, SingleitemView.class);
    context.startActivity(intent);
    });
    

    了解更多关于意图的信息 Here .

        3
  •  0
  •   Darksymphony    8 年前

    这最终解决了我的问题

    intent.putExtra("name", actorList.get(position).getName());