gpt4 book ai didi

java - 我想在 ListView 中一行显示两个项目

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:47 24 4
gpt4 key购买 nike

我想在文本字段的一行中显示 2 个项目,如何在 ListView 中的同一行中放置 2 个项目?

我想要显示这样的内容:

item 1 

item 2|item3

item 4

item 5 | item 6

我的代码:

public class MultipleItemsList extends ListActivity {

private MyCustomAdapter mAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new MyCustomAdapter();
int count=0;
for (int i = 1; i < 50; i++) {

if(count==0){
mAdapter.addItem("item " + i);
count++;
}
else if (count == 1) {
mAdapter.addSeparatorItem("item " + i);
count++;
}
else if(count==2){
mAdapter.addSeparatorItem1("item "+i);
count=0;
}
}
setListAdapter(mAdapter);
}

private class MyCustomAdapter extends BaseAdapter {

private static final int TYPE_ITEM = 0;
private static final int TYPE_SEPARATOR = 1;
private static final int TYPE_SEPARATOR1=2;
private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;

private ArrayList<String> mData = new ArrayList<String>();
private LayoutInflater mInflater;

private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();
private TreeSet<Integer> mSeparatorSet1=new TreeSet<Integer>();
public MyCustomAdapter() {
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

public void addItem(final String item) {
mData.add(item);
notifyDataSetChanged();
}

public void addSeparatorItem(final String item) {
mData.add(item);
// save separator position
mSeparatorsSet.add(mData.size() - 1);
notifyDataSetChanged();
}
public void addSeparatorItem1(final String item){
mData.add(item);
mSeparatorSet1.add(mData.size()-1);
notifyDataSetChanged();
}

@Override
public int getItemViewType(int position) {
if(mSeparatorsSet.contains(position)){
return TYPE_SEPARATOR;
}
else if(mSeparatorSet1.contains(position)){
return TYPE_SEPARATOR1;
}
else
return TYPE_ITEM;
}

@Override
public int getViewTypeCount() {
return TYPE_MAX_COUNT;
}

@Override
public int getCount() {
return mData.size();
}

@Override
public String getItem(int position) {
return mData.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
int type = getItemViewType(position);
System.out.println("getView " + position + " " + convertView + " type = " + type);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case TYPE_ITEM:
convertView = mInflater.inflate(R.layout.item1, null);
holder.textView = (TextView)convertView.findViewById(R.id.text);
break;
case TYPE_SEPARATOR:
convertView = mInflater.inflate(R.layout.item2, null);
holder.textView = (TextView)convertView.findViewById(R.id.textSeparator);
break;
case TYPE_SEPARATOR1:
convertView=mInflater.inflate(R.layout.item2,null);
holder.textView=(TextView)convertView.findViewById(R.id.textSeparator1);
break;
}
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.textView.setText(mData.get(position));
return convertView;
}

}

public static class ViewHolder {
public TextView textView;
}
}

最佳答案

ListView并不真正支持这种操作。 ListView 中的项目必须垂直堆叠。 ListView 的内部实现将阻止任何说服它以不同方式布置项目的简单尝试。

查看兼容性库中的 GridLayout 控件。这涵盖了您想要相当轻松地完成的事情。

关于java - 我想在 ListView 中一行显示两个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31710047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com