【问题标题】:unwanted button in each field of giridviewgiridview 每个字段中不需要的按钮
【发布时间】:2013-08-27 09:10:13
【问题描述】:

我想在我的 gridview 中添加一个按钮,但是当我拖放按钮并运行项目时,我看到该按钮位于 gridview 的每个字段中...我尝试了一些解决方案,例如制作 2 个线性布局,然后放单独布局的按钮,但没有变化! 这是代码:

public class gridview extends Activity{
    GridView grid_main;
    Context context;
    TextView tv;
    EditText tx;
    ImageAdapter grid;
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        context = this;
       setContentView(R.layout.gridview);
        grid_main = (GridView)findViewById(R.id.gridview);
        grid_main.setAdapter(new ImageAdapter(this));
        grid= new ImageAdapter(context);

//        grid_main.setOnItemClickListener(new OnItemClickListener() {
  //          public void onItemClick(AdapterView parent, View v, int position, long id) {
    //            grid .getCount();
      //          grid .getItem(position);
       // }
       // });


    }
    public class ImageAdapter extends BaseAdapter{
        Context mContext;
        public static final int ACTIVITY_CREATE = 10;
        public ImageAdapter(Context c){
            mContext = c;
        }
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return 5;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            View v;
            if(convertView==null){
                     LayoutInflater inflater = ((Activity)context).getLayoutInflater();
                v= inflater.inflate(R.layout.list_item,parent, false);

                    tv = (TextView)v.findViewById(R.id.textView1);
                    tx = (EditText)v.findViewById(R.id.editText1);
                    tv.setText(""+R.drawable.download);
                    ImageView iv = (ImageView)v.findViewById(R.id.imageView1);
                    iv.setImageResource(mThumbIds[position]);




            }
            else
            {
                v = convertView;
            }
            return v;
        }
        private Integer[] mThumbIds = {
                R.drawable.download,
                R.drawable.download,
                R.drawable.french,
                R.drawable.download,
                R.drawable.download,
                R.drawable.french,
                R.drawable.download,
                R.drawable.download,
                R.drawable.french,
                R.drawable.french
        };
        public Object getItem(int position) {
            return position;
        }

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

xml 文件:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >



<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="366dp"
    android:orientation="vertical" >




<GridView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:columnWidth="90dp"
    android:gravity="center"
    android:horizontalSpacing="10dp"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth"
    android:verticalSpacing="10dp" >

</GridView>

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/download" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="textview" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="number" >

    <requestFocus />
</EditText>

 </LinearLayout>

  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

</LinearLayout>

    08-27 15:26:24.067: E/AndroidRuntime(26165): FATAL EXCEPTION: main
08-27 15:26:24.067: E/AndroidRuntime(26165): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.finalproject3/com.example.finalproject3.gridview}: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
08-27 15:26:24.067: E/AndroidRuntime(26165):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at dalvik.system.NativeStart.main(Native Method)
08-27 15:26:24.067: E/AndroidRuntime(26165): Caused by: java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.widget.AdapterView.addView(AdapterView.java:477)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:750)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:365)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.app.Activity.setContentView(Activity.java:1912)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at com.example.finalproject3.gridview.onCreate(gridview.java:24)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.app.Activity.performCreate(Activity.java:5066)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101)
08-27 15:26:24.067: E/AndroidRuntime(26165):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
08-27 15:26:24.067: E/AndroidRuntime(26165):    ... 11 more

【问题讨论】:

  • 你在哪里放按钮..那么为什么要使用拖放..
  • 问题已被编辑!
  • @eng.m.a ,通过捕获发布您的应用后屏幕
  • 为什么你在活动和适配器中使用相同的布局
  • 我遇到了同样的问题并解决了! stackoverflow.com/questions/18485203/…

标签: android android-layout gridview


【解决方案1】:

从网格布局 xml 中删除列表项。使用单独的布局来显示 ListItem

gridview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="366dp"
    android:orientation="vertical" >

<GridView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:columnWidth="90dp"
    android:gravity="center"
    android:horizontalSpacing="10dp"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth"
    android:verticalSpacing="10dp" >

</GridView>

 </LinearLayout>

  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>
</LinearLayout>

list_item.xml

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="number" >

    <requestFocus />
</EditText>

</LinearLayout>

更改了您的适配器 getView 方法

 @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            View v;
            if(convertView==null){                 

                LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            v= inflater.inflate(R.layout.list_item,parent, false);

                tv = (TextView)v.findViewById(R.id.textView1);
                tx = (EditText)v.findViewById(R.id.editText1);
                tv.setText(""+R.drawable.download);
                ImageView iv = (ImageView)v.findViewById(R.id.imageView1);
                iv.setImageResource(mThumbIds[position]);



            }
            else
            {
                v = convertView;
            }
            return v;
        }

【讨论】:

  • 谢谢,但我在这一行遇到错误:LayoutInflater inflater = context.getLayoutInflater();...方法“getlauoutinflater”不针对类型上下文
  • 我这样做了,但是当我运行它时,应用程序力停止了! :(
  • 发布你的 logcat 异常
【解决方案2】:

我猜你只是想要一个 GridLayout 和你的 imageview、textview 和 textedit 并在它们下面你的按钮?试试这个:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

   <GridLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:columnCount="2"
        android:rowCount="2">

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/download" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="textview" />

        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10" />

    </GridLayout>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

如果您没有 Android 4.0 或更高版本,则 GridLayouts 不可用。那么就使用这段代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:src="@drawable/download" />

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="textview" />

        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

此解决方案将在顶部显示图像。 在他左边的 TextView 和右边的 EditText 下 底部是你的按钮

【讨论】:

  • 我想你没有明白我的问题是什么:) 我不希望“按钮”出现在 gridview 中!我希望它脱离 gridview...所以我把它放在单独的布局中。
  • 是的,我想要和你说的一样薄,但是当我复制你的代码时,“gridlayout”出现错误
  • 错误是什么?将鼠标移到红线上,告诉我它在说什么
  • 视图需要 API 级别 14(当前最低为 8):
  • GridLayouts 只能在最低 Android 版本 4.0 的 Android 设备上运行。我将为在您的版本上运行的布局编辑帖子。
猜你喜欢
  • 2016-10-27
  • 2015-10-21
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2012-03-14
相关资源
最近更新 更多