我试图通过调用:来添加视图和删除视图,具体取决于我的需要从我的 ListView 适配器
holder.wrapper.removeView(holder.PimageView);
holder.wrapper.removeView(holder.theMessage);
和
holder.wrapper.addView(holder.PimageView);
根据我的需要,当转换视图为空(第一次加载)它的工作原理找到,但当我刷新那个(转换视图不为空)我得到这个错误:
07-05 14:00:36.077: E/AndroidRuntime(2019): FATAL EXCEPTION: main
07-05 14:00:36.077: E/AndroidRuntime(2019): Process: com.lifemate.lmmessenger, PID:
2019
07-05 14:00:36.077: E/AndroidRuntime(2019): java.lang.IllegalStateException: The
specified
child already has a parent. You must call removeView() on the child's parent first.
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.view.ViewGroup.addViewInner(ViewGroup.java:3562)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.view.ViewGroup.addView(ViewGroup.java:3415)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.view.ViewGroup.addView(ViewGroup.java:3360)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.view.ViewGroup.addView(ViewGroup.java:3336)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
com.lifemate.lmmessenger.listviewengine.ChatAdapter.getView(ChatAdapter.java:249)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.widget.AbsListView.obtainView(AbsListView.java:2240)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.widget.ListView.makeAndAddView(ListView.java:1790)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.widget.ListView.fillUp(ListView.java:725)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.widget.ListView.layoutChildren(ListView.java:1611)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.widget.AbsListView.onLayout(AbsListView.java:2091)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.view.View.layout(View.java:14817)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.view.ViewGroup.layout(ViewGroup.java:4631)
07-05 14:00:36.077: E/AndroidRuntime(2019): at
android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055)
顺便说一句,最后一行是RelativeLayout。onLayout,但如果我的xml是带有LinearLayout子级的FrameLayout的话,这正常吗?
这是我的代码:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mLayoutInflater.inflate(R.layout.listitem_discuss, null);
this.convertview=convertView;
System.out.println("ConverView null");
holder.PimageView = (ImageView)convertView.findViewById(R.id.PimageView);
holder.wrapper = (LinearLayout) convertView.findViewById(R.id.wrapper);
holder.theMessage = (TextView) convertView.findViewById(R.id.comment);
holder.theName = (TextView) convertView.findViewById(R.id.MSGname);
holder.theImage = (ImageView)convertView.findViewById(R.id.MSGimage);
holder.lp = (FrameLayout.LayoutParams) holder.theName.getLayoutParams();
holder.paramsleft = new FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,Gravity.LEFT);
holder.paramsright = new FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,Gravity.RIGHT);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
String theType="Known";
if(holder.badge!=null){
holder.badge.setVisibility(View.GONE);
holder.badge.invalidate();
holder.badge=null;
}
mCursor.moveToPosition(position);
String imagenamer=
(mCursor.getString(mCursor.getColumnIndex("username")).split("\\@"))[0];
int isright= Integer.valueOf(mCursor.getString(mCursor.getColumnIndex("isright")));
holder.wrapper.removeView(holder.PimageView);
holder.wrapper.removeView(holder.theMessage);
// here both DependantViews are removed
//Condition 1 :
holder.wrapper.addView(holder.PimageView);
//Condition 2 :
holder.wrapper.addView(holder.theMessage);
这些方法就是错误发生的地方,我尝试过View。GONE和View。VISIBLE,但在滚动列表视图之后,它会变得混乱,当它应该消失时,保留给PImageView的布局空间为空,比如当您调用View,INVISIBLE时。
这是我的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<FrameLayout
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/MSGname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
/>
<ImageView
android:id="@+id/MSGimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
/>
<LinearLayout
android:id="@+id/wrapper"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/PimageView"
android:layout_width="1dp"
android:layout_height="1dp"
android:layout_margin="5dip"
/>
<TextView
android:id="@+id/comment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dip"
android:background="@drawable/bubble_yellow"
android:textColor="@android:color/primary_text_light" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
持有者:
if (convertView == null) {
holder = new ViewHolder();
convertView = mLayoutInflater.inflate(R.layout.listitem_discuss, null);
this.convertview=convertView;
System.out.println("ConverView null");
holder.PimageView = (ImageView)convertView.findViewById(R.id.PimageView);
holder.wrapper = (LinearLayout) convertView.findViewById(R.id.wrapper);
holder.theMessage = (TextView) convertView.findViewById(R.id.comment);
holder.theName = (TextView) convertView.findViewById(R.id.MSGname);
holder.theImage = (ImageView)convertView.findViewById(R.id.MSGimage);
holder.lp = (FrameLayout.LayoutParams) holder.theName.getLayoutParams();
holder.paramsleft = new FrameLayout.LayoutParams
(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,Gravity.LEFT);
holder.paramsright = new FrameLayout.LayoutParams
(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,Gravity.RIGHT);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
以及取景框:
public static class ViewHolder {
private TextView theMessage;
private TextView theName;
private LinearLayout wrapper;
private ImageView PimageView;
ImageView theImage;
ImageView theImage2;
FrameLayout.LayoutParams lp;
FrameLayout.LayoutParams paramsleft;
FrameLayout.LayoutParams paramsright;
BadgeView badge ;
VideoView PvideoView;
}
抱歉,如果它重复,但一些机构精确地问
任何帮助家伙出了什么问题?多谢
您错误地实现了ViewHolder模式。由于您使用findViewById()
获得的视图已经是LinearLayout
的子视图,因此您根本不需要调用addView()
。
错误: 致命异常:main java。java上的lang.NullPointerException。木卫一。文件java上的fixSlashes(File.java:185) 。木卫一。文件(文件:java:134)在ua。罗曼波塔普斯基。安提霍克。普罗卡顿。交付活动。ua的galleryAddPic(DeliverActivity.java:308)。罗曼波塔普斯基。安提霍克。普罗卡顿。交付活
问题内容: 最近8个小时我一直在阅读文档,但没有发现任何可以帮助我的东西。大概是,但是没有代码在工作,因为它一直说“找不到图像URL”并引发异常。但是我还有其他项目,从来没有这个问题。 因此,有一个类包含这样的月份: 到目前为止,一切都很好。我什至可以在控制台中对其进行测试,并且效果很好,并且可以按值排序。现在,当我尝试从资源中添加图像时,出现了我之前提到的问题:找不到URL。但是,我只能使用图像
问题内容: 这是我第一次接触android。我正在尝试向我的ListView添加项目。我使用“选项卡”,查看添加项目的唯一方法是更改选项卡,然后返回到第一个选项卡。 我到处搜寻,而且一直都找到 但对我不起作用。 正如我所说,我已经使用固定标签+滑动创建了项目。我只希望有一个列表视图,哪些行具有一个EditText,一个Spinner和一个Button。在用于选项卡的Fragment的底部,我有
我试图获得卡的列表,并尝试使用小部件,但有错误 我的代码: 我得到的错误是:
若要添加一个新的视图,点击工具栏的 “视图”按钮,并点击画布的任意位置。你可以从浏览器的模型选项卡添加一个现有的视图,简单地从模型选项卡拖放视图到画布。 【注意】如果你按住 Control 键并点按视图的连接器,你可以选择添加或删除顶点,以及更改它的颜色。 在画布中视图对象的弹出式菜单选项包括: 选项 描述 设计视图 在“视图设计器”中编辑视图结构。 添加关联的对象 添加全部关联的表或视图到选择的
若要添加一个新的视图,点击工具栏的 “视图”按钮,并点击画布的任意位置。你可以从浏览器的模型选项卡添加一个现有的视图,简单地从模型选项卡拖放视图到画布。 【注意】如果你右击视图连接器,你可以选择添加或删除顶点,以及更改它的颜色,或者前往源视图和目标表。 在画布中视图对象的弹出式菜单选项包括: 选项 描述 设计视图 在“视图设计器”中编辑视图结构。 添加关联的对象 添加全部关联的表或视图到选择的视图