[英]I want to change RecyclerView list data by fragment in TabLayout
I Want to change RecyclerView list data by fragment in TabLayout . 我想按TabLayout中的片段更改RecyclerView列表数据。 I want to remove old data and i want to put my own data into app, I am new so i do not know how to reomove and how to put new data
我想删除旧数据,并且想将自己的数据放入应用程序中,所以我是新手,所以我不知道如何删除和放置新数据
MainActivity : 主要活动 :
package baleli.urdupoetrybytariq;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static Toolbar toolbar;
private static ViewPager viewPager;
private static TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
viewPager = (ViewPager) findViewById(R.id.viewPager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(viewPager);//setting tab over viewpager
//Implementing tab selected listener over tablayout
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());//setting current selected item over viewpager
switch (tab.getPosition()) {
case 0:
Log.e("TAG","TAB1");
break;
case 1:
Log.e("TAG","TAB2");
break;
case 2:
Log.e("TAG","TAB3");
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
//Setting View Pager
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new DummyFragment("Item"), "Love Poetry");
adapter.addFrag(new DummyFragment("Item"), "Bewafa Poetry");
adapter.addFrag(new DummyFragment("Item"), "Sad Poetry");
viewPager.setAdapter(adapter);
}
//View Pager fragments setting adapter class
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();//fragment arraylist
private final List<String> mFragmentTitleList = new ArrayList<>();//title arraylist
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
//adding fragments and title method
public void addFrag(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
Recyclerview_Adapter : Recyclerview_Adapter:
package baleli.urdupoetrybytariq;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import java.util.ArrayList;
/**
* Created by SONU on 10/09/15.
*/
public class RecyclerView_Adapter extends
RecyclerView.Adapter<DemoViewHolder> {
private ArrayList<String> arrayList;
private Context context;
public RecyclerView_Adapter(Context context,
ArrayList<String> arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@Override
public int getItemCount() {
return (null != arrayList ? arrayList.size() : 0);
}
@Override
public void onBindViewHolder(DemoViewHolder holder,
int position) {
final DemoViewHolder mainHolder = (DemoViewHolder) holder;
//Setting text over textview
mainHolder.title.setText(arrayList.get(position));
}
@Override
public DemoViewHolder onCreateViewHolder(
ViewGroup viewGroup, int viewType) {
LayoutInflater mInflater = LayoutInflater.from(viewGroup.getContext());
ViewGroup mainGroup = (ViewGroup) mInflater.inflate(
R.layout.item_row, viewGroup, false);
DemoViewHolder mainHolder = new DemoViewHolder(mainGroup) {
@Override
public String toString() {
return super.toString();
}
};
return mainHolder;
}
}
DummyFragment : DummyFragment:
package baleli.urdupoetrybytariq;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import baleli.urdupoetrybytariq.R;
/**
* Created by SONU on 16/09/15.
*/
public class DummyFragment extends Fragment {
private View view;
private String title;//String for tab title
private static RecyclerView recyclerView;
public DummyFragment() {
}
public DummyFragment(String title) {
this.title = title;//Setting tab title
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.dummy_fragment, container, false);
setRecyclerView();
return view;
}
//Setting recycler view
private void setRecyclerView() {
recyclerView = (RecyclerView) view
.findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView
.setLayoutManager(new LinearLayoutManager(getActivity()));//Linear Items
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < 50; i++) {
arrayList.add(title+"" + i);//Adding items to recycler view
}
RecyclerView_Adapter adapter = new RecyclerView_Adapter(getActivity(), arrayList);
recyclerView.setAdapter(adapter);// set adapter on recyclerview
}
}
DemoViewHolder : DemoViewHolder:
package baleli.urdupoetrybytariq;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
/**
* Created by SONU on 31/08/15.
*/
public abstract class DemoViewHolder extends RecyclerView.ViewHolder {
public TextView title;
public DemoViewHolder(View view) {
super(view);
this.title = (TextView) view.findViewById(R.id.cardTitle);
}
}
Here you are using loop
to insert data into your ArrayList
. 在这里,您使用
loop
将数据插入到ArrayList
。
Change your below code to my code : 将您的以下代码更改为我的代码:
DummyFragment.java : DummyFragment.java:
YOUR CODE : 您的代码:
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
arrayList.add(title+" Items " + i);//Adding items to recycler view
}
CHANGE TO BELOW CODE : 更改为以下代码:
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("First Data");
arrayList.add("Second Data");
arrayList.add("Third Data");
arrayList.add("Fourth Data");
arrayList.add("Fifth Data");
arrayList.add("Sixth Data"); //As like your can insert data to your ArrayList.
In Simple way, You have to clear your existing ArrayList
and than do notifyDataSetChanged
to notify adapter data is changed and than add new data to Arrayist
make sure Arrayist
you send to adapter will not change ref while adding new data. 以简单的方式,您必须清除现有的
ArrayList
然后用notifyDataSetChanged
通知适配器数据已更改,然后将新数据添加到Arrayist
以确保发送到适配器的Arrayist
在添加新数据时不会更改ref。 and call again notifyDataSetChanged
to tell adapter you have new data to show. 并再次调用
notifyDataSetChanged
告诉适配器您有新数据要显示。
That's all you have to do. 那就是你要做的。 Cheer!.
欢呼!。 let me know if u have any question
让我知道你是否有任何问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.