I have a listview in a Tab in a Tab Activity. Lets say that the Activity's name is "Main". I want it so when I press on an item in the listview (which is in a tab, which is in an activity), it refreshes "Main" (The Overall Activity).
Use onItemClickListener() for your listview as shown below.
In following example, MainActivity will restart when "Item 1" is clicked.
ListView listView=findViewById(R.id.list_view);
List<String> mList= Arrays.asList("Item 1","Item 2","Item 3");
listView.setAdapter(new ListViewAdapter(this,R.layout.list_item_layout,mList));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Restart activity when Item 1 gets clicked
if("Item 1".equals(parent.getAdapter().getItem(position).toString())){
startActivity(new Intent(MainActivity.this,MainActivity.class));
finish();
}
}
});
Example: ListViewAdapter.class
public class ListViewAdapter extends ArrayAdapter<String> {
private List<String> mList;
public ListViewAdapter(@NonNull Context context, int resource, @NonNull List<String> list) {
super(context, resource, list);
this.mList = list;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_layout,parent,false);
}
((TextView) convertView.findViewById(R.id.tv_item)).setText(getItem(position));
return convertView;
}
@Nullable
@Override
public String getItem(int position) {
return mList.get(position);
}
}
Considering you are using a FragmentPagerAdapter in your tabbed activity, you can put the code for the ListView in onCreateView() of the corresponding fragment instance,
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ListView listView=rootView.findViewById(R.id.list_view);
List<String> mList= Arrays.asList("Item 1","Item 2","Item 3");
listView.setAdapter(new ListViewAdapter(rootView.getContext(),R.layout.list_item_layout,mList));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Restart activity when Item 1 gets clicked
if("Item 1".equals(parent.getAdapter().getItem(position).toString())){
if(getActivity()!=null){
startActivity(new Intent(getActivity(),MainActivity.class));
getActivity().finish();
}
}
}
});
return rootView;
}
}