Android 如何定制ListView?
我想从Listview中创建一个可重用的Listview控件,在该控件中可以控制列,比如我想加载3列列表视图,有时加载2列,有时加载4列。 如何按语法控制列表视图的列和行。根据我的json值,我将显示列表。 此外,我想使一些列也可编辑。这也需要由代码级别控制 这是我启动的代码:Android 如何定制ListView?,android,listview,Android,Listview,我想从Listview中创建一个可重用的Listview控件,在该控件中可以控制列,比如我想加载3列列表视图,有时加载2列,有时加载4列。 如何按语法控制列表视图的列和行。根据我的json值,我将显示列表。 此外,我想使一些列也可编辑。这也需要由代码级别控制 这是我启动的代码: import android.content.Context; import android.graphics.Color; import android.graphics.PorterDuff; import org
import android.content.Context;
import android.graphics.Color;
import android.graphics.PorterDuff;
import org.json.JSONArray;
import org.json.JSONObject;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class LayoutAdvancedList extends ListView {
private String m_name;
private int m_editMask = 0;
private int m_EditedRowIndex = 0;
private int m_EditedFieldIndex = 0;
public String getName() {
return m_name;
}
public void setName(String name) {
this.m_name = name;
}
public void setMaxLength(final int maxLength) {
if (maxLength > 0) {
// super.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxLength)});
} else {
// super.setFilters(new InputFilter[]{});
}
}
public void setReadOnly(final boolean readOnly) {
super.setFocusable(!readOnly);
super.setFocusableInTouchMode(!readOnly);
super.setClickable(!readOnly);
super.setLongClickable(!readOnly);
// super.setCursorVisible(!readOnly);
}
public LayoutAdvancedList(Context context) {
super(context);
LayoutInitialize(context);
}
public LayoutAdvancedList(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInitialize(context);
}
public LayoutAdvancedList(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
LayoutInitialize(context);
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
if (enabled) {
this.getBackground().setColorFilter(null);
} else {
this.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);
}
}
可能ListView中的每个项目都是由子视图定义的,子视图在每行中排列成2-4列,具体取决于您的需求。只需使用view.setVisibilityView.GONE、view.setVisibilityView.VISIBLE或view.setVisibilityView.INVISIBLE以编程方式控制每个列的存在/不存在如果您有选择,您应该使用一个带有GridLayoutManager的RecyclerView,以便可以动态选择列数:
recyclerView.setLayoutManager(new GridLayoutManager(this, numberOfColumns));
你能发布你想要实现的UI快照吗?为什么不使用recycler view?如果我不知道服务器可以预期的列数,如果服务器说需要显示n个列,怎么能有一个控件?所以我的主要问题是如何基于服务器的json创建列