如何设置从另一个片段接收的片段的textview的值? [英] How to set value for textview of fragment received from another fragment?

查看:49
本文介绍了如何设置从另一个片段接收的片段的textview的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从另一个片段接收值时,我不知道如何在第二个片段的文本视图中进行设置。我在第二个片段中收到的数据是StringList的对象,但是现在我不知道如何为它设置数据。

I don't know how to set in the textview of second fragment when received the value from another fragment. The data I received in the second fragment is the "value" object of StringList but I don't now how to set the data for it.

StringList类:

StringList class:

public class StringList {

    public String authorName;
    public String headline;
    public String publishedTime;
    public String newsDetail;

}

MainActivity:

MainActivity:

//only useful code pasted below for tranfering thre value from fragment to another fragment and i have implemented the TransferValue to the mainActivity

        public void sendValue(StringList value, int positionValue) {

            FragmentTransaction transaction = frag.beginTransaction();
            BusinessDetail businessDetail = new BusinessDetail();
            businessDetail.receiveValue(value, positionValue);
            transaction.replace(R.id.content_frame, businessDetail);
            transaction.commit();

        }

Fragment1:

Fragment1:

    public class Business extends Fragment  {

        public List<StringList> businessNews = new ArrayList<>();

        TransferValue SendData;//here

        private RecyclerView recyclerView;
         public Business() {

        }

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

            View view = inflater.inflate(R.layout.fragment_business, container, false);
            recyclerView = (RecyclerView) view.findViewById(R.id.business_recycler_view);

            FetchLists f = new FetchLists();
            f.execute(10, 0);
            return view;
        }

        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }

        @Override
        public void onAttach(Context context) {
            super.onAttach(context);
    //here
            try {
                SendData = (TransferValue) context;
            } catch (ClassCastException e) {
                Log.d("ashu", "implement the methods");
                throw new ClassCastException("implemented the methods");
            }
        }

//here
        public interface TransferValue {

            public void sendValue(StringList value, int positionValue);

        }

        public class FetchLists extends AsyncTask<Integer, Void, List<StringList>> {

            @Override
            protected List<StringList> doInBackground(Integer... params) {

                int count = params[0];
                int offset = params[1];
    //api key changed
                String urlString = "https://newspi.og/v1/article?source=bloomerg&sortBy=tp&apiKey=5fdfd54f4aba5a5fdfvdf476ff528a8";
                urlString = urlString + "&count=" + count + "&offset=" + offset;

                try {
                    URL url = new URL(urlString);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    InputStream stream = connection.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
                    String line = reader.readLine();
                    String response = "";
                    while (line != null) {
                        response += line;
                        line = reader.readLine();
                    }

                    JSONObject object = new JSONObject(response);
                    JSONArray emailLists = object.getJSONArray("articles");

                    for (int i = 0; i < emailLists.length(); i++) {
                        JSONObject listData = (JSONObject) emailLists.get(i);

                        StringList stringList = new StringList();
                        stringList.authorName = listData.getString("author");
                        stringList.headline = listData.getString("title");
                        stringList.publishedTime = listData.getString("publishedAt");
                        stringList.newsDetail = listData.getString("description");

                        businessNews.add(stringList);
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
                return businessNews;
            }

            @Override
            protected void onPostExecute(List<StringList> result) {
                super.onPostExecute(result);

                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                BusinessAdapter adapter = new BusinessAdapter(Business.this, result);
                recyclerView.setAdapter(adapter);

            }
        }

        public class BusinessAdapter extends RecyclerView.Adapter<BusinessHolder> {

            int prevposition = 0;
            private List<StringList> c;

            public BusinessAdapter(Business context, List<StringList> result) {
                c = context.businessNews;

            }

            @Override
            public BusinessHolder onCreateViewHolder(ViewGroup parent, int viewType) {

                Context context = parent.getContext();
                LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View view = inflater.inflate(R.layout.layout_news, parent, false);

                return new BusinessHolder(view);
            }

            @Override
            public void onBindViewHolder(BusinessHolder holder, int position) {

                StringList m = c.get(position);
                holder.bindListName(m, position);

            @Override
            public int getItemCount() {
                return c.size();
            }
        }

        public class BusinessHolder extends RecyclerView.ViewHolder {

            public TextView headlineTextview;
            public TextView authorTextview;
            public TextView timeTextview;

            public BusinessHolder(View itemView) {
                super(itemView);

                headlineTextview = (TextView) itemView.findViewById(R.id.id_headline);
                authorTextview = (TextView) itemView.findViewById(R.id.id_author);
                timeTextview = (TextView) itemView.findViewById(R.id.id_time);

            }

            public void bindListName(final StringList stringList, final int position) {

                headlineTextview.setText(stringList.headline);
                authorTextview.setText(stringList.authorName);
                timeTextview.setText(stringList.publishedTime);

                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {

                         BusinessDetail s = new BusinessDetail();
                        FragmentTransaction transaction = getFragmentManager().beginTransaction();
                        transaction.replace(R.id.content_frame, s);
                        transaction.addToBackStack(null);
                        transaction.commit();
                    } });}}}}

片段2:

public class BusinessDetail extends Fragment {

    Bundle bundle;
    private TextView headlineSecond;
    private TextView authorSecond;
    private TextView detailsSecond;
    private List<StringList> s;

    public BusinessDetail() {
    }

    public void receiveValue(StringList value, int positionValue) {

        bundle = new Bundle();
        bundle.putString("news", value.authorName);
      }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_business_detail, container, false);

        headlineSecond = (TextView) view.findViewById(R.id.id_headline_second);
        authorSecond = (TextView) view.findViewById(R.id.id_author_second);
        detailsSecond = (TextView) view.findViewById(R.id.id_details_second);

// I want to set the values received to the textview here

        return view;}}


推荐答案

您可以使用 Parcelable 将任何自定义类数据的数组列表从一个活动/片段发送到下一个活动/分段。

You can send arraylist of any custom class data using Parcelable from one activity/fragment to next activity/fragment.

在上一个片段中,使用putParcelableArrayList方法将数据包添加到包中。例如

In previous fragment add data in bundle using putParcelableArrayList method. for e.g.

bundle.putParcelableArrayList("KEY_NAME",arrayName);

在下一个片段中,使用getParcelableArrayList方法在onCreate中获取数据。

In next frgament get that data in onCreate using getParcelableArrayList method.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        ArrayList<Item> itemArray = getArguments().getParcelableArrayList("KEY_NAME");
    }
}

主要是将StringList类更改为Parcelable 。对于Parcelable类示例,请单击下面的链接。

And main thing is that change your StringList class to Parcelable. For Parcelable class example click below link..

可拆分类

这篇关于如何设置从另一个片段接收的片段的textview的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆