如何将unique_id的值传递给ListView中要使用的另一个活动

时间:2016-06-21 10:07:46

标签: java android json android-intent

我有以下代码,我正在努力将唯一ID的值从json的解析数据传递到DetailActivity.java。我想在Mainactivity.java中使用DetailActivity.java中的unique_id值作为URL的参数。我是新手,所以请帮我解决这个问题。 我正在设置洞Mainactivity.javaDetailActivty.java

public class MainActivity extends AppCompatActivity {

    private TextView text1;
    private ListView lisView;
    private ProgressDialog dialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Create default options which will be used for every
        //  displayImage(...) call if no options will be passed to this method
        DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
        .cacheInMemory(true)
        .cacheOnDisk(true)
        .build();
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())

        .defaultDisplayImageOptions(defaultOptions).build();
        ImageLoader.getInstance().init(config); // Do it on Application start


        lisView = (ListView) findViewById(R.id.lvnews);
        new JSONTask().execute("http://cricapi.com/api/cricket");
        Button button = (Button)findViewById(R.id.btn);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new JSONTask().execute("http://cricapi.com/api/cricket");
            }
        });

    }


    public class JSONTask extends AsyncTask<String, String, List<NewsModel>> {



        @Override
        protected List<NewsModel> doInBackground(String... params) {
            HttpURLConnection connection = null;
            BufferedReader reader = null;
            try {
                URL url = new URL(params[0]);
                connection = (HttpURLConnection) url.openConnection();
                connection.connect();

                InputStream stream = connection.getInputStream();

                reader = new BufferedReader(new InputStreamReader(stream));
                StringBuffer buffer = new StringBuffer();
                String line = "";
                while ((line = reader.readLine()) != null) {
                    buffer.append(line);
                }
                String finalJson = buffer.toString();

                JSONObject parentObject = new JSONObject(finalJson);
                JSONArray parentArray = parentObject.getJSONArray("data");

                List<NewsModel> newsModelList = new ArrayList<>();

                for (int i = 0; i < parentArray.length(); i++) {
                    JSONObject finalObject = parentArray.getJSONObject(i);
                    NewsModel newsModel = new NewsModel();
                    newsModel.setHeadline(finalObject.getString("unique_id"));
                    newsModel.setAuthor(finalObject.getString("description")); //          newsModel.setImage(finalObject.getString("Image"));
                    newsModel.setDescription(finalObject.getString("title"));

                    newsModelList.add(newsModel);
                }
                return newsModelList;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            } finally {
                if (connection != null) {
                    connection.disconnect();
                }
                try {
                    if (reader != null) {
                        reader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }


            return null;
        }

        @Override
        protected void onPostExecute(final List<NewsModel> result) {
            super.onPostExecute(result);
            if(result != null) {
                final NewsAdapter newsAdapter = new NewsAdapter(getApplicationContext(), R.layout.row, result);
                lisView.setAdapter(newsAdapter);
                lisView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        Intent intent = new Intent(MainActivity.this, DetailActivity.class);
                        startActivity(intent);

                    }
                });
            }
        }
    }

    public class NewsAdapter extends ArrayAdapter{

        public List<NewsModel> newsModelList;
        private int resource;
        private LayoutInflater inflater;
        public NewsAdapter(Context context, int resource, List<NewsModel> objects) {
            super(context, resource, objects);
            newsModelList = objects;
            this.resource = resource;
            inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = null;
            if(convertView == null){
                holder = new ViewHolder();
                convertView = inflater.inflate(R.layout.row, null);
                holder.headline = (TextView)convertView.findViewById(R.id.headlineview);
                holder.author = (TextView)convertView.findViewById(R.id.authorview);
                //holder.image = (ImageView)convertView.findViewById(R.id.imageView);
                holder.description = (TextView)convertView.findViewById(R.id.descriptionview);

                convertView.setTag(holder);
            }else{
                holder = (ViewHolder) convertView.getTag();
            }
                //holder.headline.setText(newsModelList.get(position).getHeadline());
                holder.author.setText(newsModelList.get(position).getAuthor());
                holder.description.setText(newsModelList.get(position).getDescription());



            return convertView;
        }

        private class ViewHolder { //            private ImageView image;
            private TextView headline;
            private TextView author;
            private TextView description;
        }
    }


}

现在,我想在其中使用unique_id作为URL

的参数的DetailActivity
public class DetailActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        // here I want to access that unique_id and pass it as id to url
        //Example  http://cricapi.com/api/cricketScore?unique_id=946765
    }
}

先谢谢

2 个答案:

答案 0 :(得分:0)

您可以直接使用bundle(或),也可以通过intent本身发送它。以下是Main Activty类的代码

etc/org.apache.activemq.webconsole.cfg

现在在详细信息活动中,借助相同的唯一键获取值。

    lisView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                                Intent intent = new Intent(MainActivity.this, DetailActivity.class);
                                //Passing the values to another activty using a unique key..
                                intent.putExtra("unique_id", newsModelList.get(position).getHeadline());
                                startActivity(intent);

                            }
                    });

希望这有用。

答案 1 :(得分:0)

MainActivity中,您可以在意图中添加值,如下所示

 Intent intent = new Intent(MainActivity.this, DetailActivity.class);
 intent.putString("unique_id", value); startActivity(intent);

DetailActivity中,您可以在此onCreate方法中获取相同的值

getIntent().getString("unique_id");