public class SocialFragment extends Fragment {
private static final String TAG = SocialFragment.class.getSimpleName();
View rootView;
ExpandableListView lv;
private String[] groups;
private String[][] children;
public SocialFragment() {
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
groups = new String[]{"Test1", "Test2", "Test3", "Test4"};
children = new String[][]{
{"a","b","c","d"},
{"a"",n"",d"",dd"",hahaha"},
{"l"",m"",b"",s"},
{"""",""}
};
final Class<?>[] ACTIVITIES = { Empty1.class, Empty1.class, List1.class, List2.class, List3.class, List4.class, Empty1.class};
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_lineup, container, false);
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
lv = (ExpandableListView) view.findViewById(R.id.expListView);
}
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private final LayoutInflater inf;
private String[] groups;
private String[][] children;
public ExpandableListAdapter(String[] groups, String[][] children) {
this.groups = groups;
this.children = children;
}
@Override
public int getGroupCount() {
return groups.length;
}
@Override
public int getChildrenCount(int groupPosition) {
return children[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition) {
return groups[groupPosition];
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return children[groupPosition][childPosition];
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inf.inflate(R.layout.list_item, parent, false);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.lblListItem);
convertView.setTag(holder);
} } else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(getChild(groupPosition, childPosition).toString());
return convertView;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inf.inflate(R.layout.list_group, parent, false);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.lblListHeader);
convertView.setTag(holder);
} } else {
holder = (ViewHolder) convertView.getTag();
}
holder.text.setText(getGroup(groupPosition).toString());
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
private class ViewHolder {
TextView text;
}
}
}
This is the java file that applied the expandable list view. If you click 'a', 'b', 'c', 'c', ....... etc. on the children list, I want to put a url link differently. What should I do? For example, when you click ww.naver in the list, google. (not a new window, just a web view to work in the fragment...).) I'm a beginner I would appreciate your help
android fragment listview
You can fill it out as follows.
If you want to press items in each group/subview...
@Override
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
// ... omission
holder.text.setText(getChild(groupPosition, childPosition).toString());
holder.text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/// Click Processing
}
};
// ... omission
return convertView;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
// ... omission
holder.text.setText(getGroup(groupPosition).toString());
holder.text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/// Click Processing
}
};
return convertView;
}
You can process OnClickListener in TextView as above.
Also, we recommend using RecyclerView rather than ListView.
It's similar, but it's also easier to use.
I'll give you an additional sample code
First of all, you can process the data as follows.
ArrayList<Data object name> itemList;
Please write in the following form as a separate class.
public class data object name {
public String url;
}
Please fill it out as above.
The following code is used to invoke the Web browser through Intent:
Uri uri = Uri.parse("http://www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
And when you put it together, you can do the following:
If you work with itemList, it is simple to use, so you can get the value of a specific location through get.
Use groupPostion and childPosition to handle actions that fit the item.
In this case, there should be two item lists, right?
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
// ... omission
holder.text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = itemList.get(groupPosition).url;
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent);
}
};
}
You can create an example as shown above.
You have to set the context and item list from the outside.
I will link the ExpandableListView example that I wrote in the past.
© 2024 OneMinuteCode. All rights reserved.