How to pass value of unique_id to another activity

2019-06-11 03:52发布

I have following code in which I am struggling to pass value of unique id from the parsed data from json to the DetailActivity.java . I want to use that value of unique_id from Mainactivity.javain DetailActivity.java as a parameter to the URL .I am a newbie so help me out on this. I am putting the hole Mainactivity.java and DetailActivty.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;
        }
    }


}

Now to the DetailActivity in which I would like to use unique_id as a parameter to URL

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
    }
}

Thanks in Advance

2条回答
虎瘦雄心在
2楼-- · 2019-06-11 04:16

In the MainActivity, you can add values in the intent like below

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

In the DetailActivity you can fetch the same value in the onCreate method like this

getIntent().getString("unique_id");
查看更多
疯言疯语
3楼-- · 2019-06-11 04:28

You can use either bundle (or) directly you can send it through the intent itself. Below is the code for Main Activty class

    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);

                            }
                    });

Now in details activity get the values with the help of the same unique key.

Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
            String text = bundle.getString("unique_id");
        }

Hope this is helpful.

查看更多
登录 后发表回答