- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用在网上找到的可扩展 ListView 示例
Activity :
public class ExpandableListViewActivity extends ExpandableListActivity {
/**
* strings for group elements
*/
static final String arrGroupelements[] = { "India", "Australia", "England",
"South Africa" };
/**
* strings for child elements
*/
static final String arrChildelements[][] = {
{ "Sachin Tendulkar", "Raina", "Dhoni", "Yuvi" },
{ "Ponting", "Adam Gilchrist", "Michael Clarke" },
{ "Andrew Strauss", "kevin Peterson", "Nasser Hussain" },
{ "Graeme Smith", "AB de villiers", "Jacques Kallis" } };
DisplayMetrics metrics;
int width;
ExpandableListView expList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
expList = getExpandableListView();
metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
width = metrics.widthPixels;
// this code for adjusting the group indicator into right side of the
// view
expList.setIndicatorBounds(width - GetDipsFromPixel(50), width
- GetDipsFromPixel(10));
expList.setAdapter(new ExpAdapter(this));
expList.setOnGroupExpandListener(new OnGroupExpandListener() {
public void onGroupExpand(int groupPosition) {
Log.e("onGroupExpand", "OK");
}
});
expList.setOnGroupCollapseListener(new OnGroupCollapseListener() {
public void onGroupCollapse(int groupPosition) {
Log.e("onGroupCollapse", "OK");
}
});
expList.setOnChildClickListener(new OnChildClickListener() {
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Log.e("OnChildClickListener", "OK");
return false;
}
});
}
public int GetDipsFromPixel(float pixels) {
// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
return (int) (pixels * scale + 0.5f);
}
}
适配器:
public class ExpAdapter extends BaseExpandableListAdapter {
private Context myContext;
public ExpAdapter(Context context) {
myContext = context;
}
public Object getChild(int groupPosition, int childPosition) {
return null;
}
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) myContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.child_row, null);
}
TextView tvPlayerName = (TextView) convertView
.findViewById(R.id.tvPlayerName);
tvPlayerName
.setText(ExpandableListViewActivity.arrChildelements[groupPosition][childPosition]);
return convertView;
}
public int getChildrenCount(int groupPosition) {
return ExpandableListViewActivity.arrChildelements[groupPosition].length;
}
public Object getGroup(int groupPosition) {
return null;
}
public int getGroupCount() {
return ExpandableListViewActivity.arrGroupelements.length;
}
public long getGroupId(int groupPosition) {
return 0;
}
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) myContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.group_row, null);
}
TextView tvGroupName = (TextView) convertView
.findViewById(R.id.tvGroupName);
tvGroupName
.setText(ExpandableListViewActivity.arrGroupelements[groupPosition]);
return convertView;
}
public boolean hasStableIds() {
return false;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
主.xml:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ExpandableListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:groupIndicator="@drawable/group_indicator" >
<TextView
android:id="@+id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="No Items" >
</TextView>
</ExpandableListView>
</LinearLayout>
我试过这个解决方案,但没有用:(
Android: Custom ListAdapter extending BaseAdapter crashes on application launch
它被告知要将第三个参数“false”添加到 inflater.inflate(R.layout.group_row, null, false);
最佳答案
将 TextView
移到 ExpandableListView
元素之外:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ExpandableListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:groupIndicator="@drawable/group_indicator" >
</ExpandableListView>
<TextView
android:id="@+id/android:empty"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="No Items" >
</TextView>
</LinearLayout>
AdapterView
的子类(如 ExpandableListView
)不能在 xml 布局中有子类(就像您在布局中所做的那样)。
关于android - AdapterView 不支持 java.lang.UnsupportedOperationException : addView(View, LayoutParams),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11154379/
当我打算执行 thirdactivity.class 时,Logcat 会这样说,这是什么意思?该 Activity 已建成。但是当模拟时,程序停止了。 11-11 10:17:25.824: E/A
我的代码显示此错误...AdapterView 是原始类型。 AdapterView 泛型类型 AdapterView 的引用应该被参数化,我该怎么办? public void onItemClick
我正在实现 AdapterView产生一个AbsListView -like 类,我可以使用 CursorAdapter在布局中。我正在实现这个,因为我想使用方便的自动数据更新行为 CursorAda
在我的小部件中,当 ListView 中的一个项目被长按时,我希望启动该项目(然而,在我目前的编码中,正常的点击也可以做到这一点,但现在我正在让长按做一些事情这样我就可以设置它以供以后需要更改长按的功
我创建了扩展“AdapterView”的类 A,并创建了扩展“BaseAdapter”以提供数据的类 D。 问题是每个 AdapterView 项目都没有将其长度拉伸(stretch)到 Adapte
所以我为我正在使用的饼图 View 创建了一个自定义 AdapterView。我不确定我做错了什么,但当我尝试旋转饼图时,饼图非常不稳定。我怀疑正在进行太多绘图,因为 traceview 显示对 Ca
我的 ListView 有一个 OnItemClickListener,如下所示: OnItemClickListener myClickHandler = new OnItemClickListen
我正在尝试(出于学习目的)我自己实现一个简单的 AdapterView,其中项目来自基本适配器(来自 sdk 示例的 ImageAdapter)。 实际代码是这样的: public class
在我的应用程序中,我实现了一个抽屉导航,它显示支票簿的银行账户列表。我编写了一个处理此列表的 AccountAdapter 类,并在我的 NavigationDrawerFragment 类中使用以下
我的应用程序的 MainActivity 中有一个抽屉导航。在此 Activity 中,设置了 AdapterView。当我单击适配器的某一行时,我希望打开一个新 Activity ,但位于同一个抽屉
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我一直在关注许多关于如何优化像画廊这样的列表的教程,但是我无法让我的适配器重新循环 View 。这是我的代码: @Override public View getView(int position,
如果字符串显示在 listAdapter 的多个项目之一中,是否可以使用 android-espresso 进行验证? 尝试这样的事情: onData(anything()).inAdapterVie
这是我的问题,我有这样的类架构: Activity fragment RecyclerView(有一个适配器) 适配器: 有一个 ViewHolder 类: public static class N
我使用的是 Gallery View ,其中对应于每个项目的 View 非常重要,由文本和多个按钮组成。 当我单击以拖动画廊 View (不在其中一个按钮上的某处)时,按钮的可绘制状态变为已按下,并且
我有一个动态列表,我想在带有单选按钮的适配器 View 中显示该列表。在一组。 我用过: public class Type2Adapter extends BaseAdapter{ Cont
如标题:我想知道如何获取我的 AdapterView 中所有当前显示的项目的列表(数组)。 为什么?在我的 AdapterView 中显示的对象需要在用户关闭 AdapterView 后释放一个监听器
我尝试设置 AdapterView.OnItemClickListener 来工作,但它不断出现错误,我似乎找不到有效的答案。 mListView.setOnClickListener(new Ada
我创建了一个使用 LayoutInflater 的 Adapter arraylist,以便图像保持比例。我正在尝试对所选项目标题(即“牛肉”)进行简单的 toast 。一切都按预期工作,除了我从 t
我通过扩展 AdapterView 创建了一个自定义的 ListView,我想在这个 View 中处理关键事件。我已经覆盖了 onKeyDown,但从未看到它被调用。我什至尝试覆盖 dispatchK
我是一名优秀的程序员,十分优秀!