标签: android-gridview

Android - Gridview还是listview?

如何在我的应用程序中创建这种视图?(截图实际上是Android市场上可用的Android应用程序).

在此输入图像描述

我很困惑,因为我假设我们可以使用Gridview或使用ListView创建相同类型的布局.

问题:

  • 在Gridview中,我们可以在两行之间给出分隔符吗?我们可以给gridview中的每一行提供背景吗?
  • 在Listview中,我认为我们可以使用背景连续3本书自定义列表视图,我们也可以给出一个分隔符.

从您的专家方面,请建议我为Android应用程序设计和创建相同类型的布局的可能解决方案.

android android-listview android-gridview

23
推荐指数
1
解决办法
2万
查看次数

Android:BaseAdapter和getLayoutInflater在单独的类文件中

现在填充我的GridViews我在每个Android活动(大多数是其中)上使用扩展的BaseAdapter类.

为了便于阅读和维护,我试图将所有BaseAdapter代码放在一个单独的类文件中.

要填充GridView,我正在使用LayoutInflater,这里的东西变得棘手......

由于getLayoutInflater()来自android.Activity,它只是不会做的伎俩.我尝试将我的Adapter.java(填充GridViews的类)扩展为Activity类,然后在内部创建BaseAdapter类(我现在这样做的方式),但我无法使其正常工作.

以下是Adapter.java的外观:

//Adapter.java
package com.cimp.matitec;

import greendroid.app.GDActivity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class Adapter extends GDActivity{

public class ImageAdapter extends BaseAdapter
{
   Context MyContext;
   int count;
   String[] nombre;

   public ImageAdapter(Context _MyContext, int n, String[] nombre)
   {
      MyContext = _MyContext;
      count = n;
      this.nombre = nombre;
   }

   public int getCount()
   {
                     /* Set the number of element we want on the grid */
      return count;
   } …
Run Code Online (Sandbox Code Playgroud)

android android-gridview baseadapter

21
推荐指数
2
解决办法
3万
查看次数

OnClickListener不适用于GridView中的第一项

我在创建基于GridView的日历时遇到问题.这是网格:

GridView日历

这应该是一个填充了事件的日历,所以我有我的适配器实现OnClickListener,我为日历中的每个按钮设置了该监听器.它适用于每个按钮,除了第一个按钮(在本例中为30).当我单击它时不起作用,但是当我尝试单击第一个按钮后单击另一个按钮时,它会在执行另一个按钮的单击之前执行第一个按钮.

我已经扫描了大约10页的相关问题,但没有发现有人遇到这个问题.请帮忙!

如上所述,这是我的代码的getView函数:

    public View getView(int position, View convertView, ViewGroup parent)
    {
        View row = convertView;
        ViewHolder holder;
        if (row == null)
        {
            holder = new ViewHolder();
            LayoutInflater inflater = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.calendar_day_gridcell, parent, false);
            holder.gridCell = (Button) row.findViewById(R.id.calendar_day_gridcell);
            holder.multiDayEvent = (EventLengthView)row.findViewById(R.id.eventLengthView);
        }
        else{
            holder = (ViewHolder)row.getTag();
        }

        int calendarGridHeight = (calendarView.getHeight()-5)/(getCount()/7);
        AbsListView.LayoutParams params = new AbsListView.LayoutParams(
                android.view.ViewGroup.LayoutParams.FILL_PARENT,
                calendarGridHeight);
        row.setLayoutParams(params);

        //Change the background drawable depending on the position in the calendar
        if ((position+1) % 7 …
Run Code Online (Sandbox Code Playgroud)

android android-gridview

21
推荐指数
3
解决办法
1万
查看次数

使用冻结列和冻结标题创建表/网格

我正在开发一款小型Android应用.我需要这个Android应用程序的一部分是有一个水平和垂直滚动的网格.但是,最左边的列需要冻结(始终在屏幕上,而不是水平滚动的一部分).同样,顶部标题行需要冻结(不是垂直滚动的一部分)

如果以上内容没有太大意义,这张图片将有希望清楚地描述:

我想做什么的例子

关键:

  1. 白色:根本不滚动
  2. 蓝色:垂直滚动
  3. 红色:水平滚动
  4. 紫色:垂直和水平滚动

要做到这些尺寸中的一个很容易,我已经这样做了.但是,我无法让这两个维度发挥作用.(也就是说,我可以将底部部​​分全部变为蓝色,或者我可以将正确的部分全部变为红色,但不完全如上所述)我的代码如下所示,基本上会产生以下内容:

是)我有的!

result_grid.xml:

<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/lightGrey">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_below="@id/summaryTableLayout"
        android:layout_weight="0.1"
        android:layout_marginBottom="50dip"
        android:minHeight="100dip">
        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:scrollbars="vertical">
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
                <TableLayout
                    android:id="@+id/frozenTable"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:layout_marginTop="2dip"
                    android:layout_marginLeft="1dip"
                    android:stretchColumns="1"
                    />

                <HorizontalScrollView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@id/frozenTable"
                    android:layout_marginTop="2dip"
                    android:layout_marginLeft="4dip"
                    android:layout_marginRight="1dip">

                    <TableLayout
                        android:id="@+id/contentTable"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:stretchColumns="1"/>
                </HorizontalScrollView>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:orientation="vertical"
        android:layout_weight="0.1"
        android:layout_alignParentBottom="true">
        <Button
            android:id="@+id/backButton"
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="Return"/>
    </LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

Java代码:

private boolean showSummaries;

private TableLayout summaryTable;
private TableLayout frozenTable;
private …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-gridview

18
推荐指数
1
解决办法
1万
查看次数

如何删除android中网格视图行之间的空格

在android网格视图中,网格视图的行之间有额外的空间.我没有在gridview中添加任何空间.

这是我的xml文件

        <GridView
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/grid"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent"
                android:horizontalSpacing="5px"
                android:numColumns="3"
                android:columnWidth="50dip"
                 android:verticalSpacing="0dip"
                android:gravity="center"
                />
Run Code Online (Sandbox Code Playgroud)

以及为gridview添加视图的imageview的另一个xml是

        <ImageView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/singlePhoto"
            android:layout_gravity="top"
            android:layout_width="145dip"
            android:layout_height="145dip"
            android:layout_marginTop="0dip"
            android:layout_marginBottom="0dip"
            >
        </ImageView>
Run Code Online (Sandbox Code Playgroud)

在Adapter类中,代码是

        if(mView == null){
            mView = mLayoutInflater.inflate(R.layout.newsgridthumbpic, null);
                }

                ImageView mImage = (ImageView)mView.findViewById(R.id.singlePhoto);
                PhotoGridInfoSet mInfo = (PhotoGridInfoSet)details.get(position);
                if(mImage != null){
                mImage.setTag(mInfo.getPhotoThumbNailString());
                mImage.setVerticalScrollBarEnabled(true);
                mImage.setVerticalFadingEdgeEnabled(true);
                }
        }!
Run Code Online (Sandbox Code Playgroud)

空间位于gridview行之间.我没有在代码中的任何地方添加任何空格仍然有垂直间距.我不能理解为什么gridview行之间有空间.此空间未出现在hdpi设备/模拟器中.此问题出在mdpi和ldpi设备/模拟器中.

图片供参考. 这就是现在发生的事情.

android android-gridview

18
推荐指数
1
解决办法
3万
查看次数

java.lang.illegalstateexception在activity类的android片段中找不到方法(view)

在我的程序中,我正在使用带有一些图像的gridview,我想在用户点击gridview中的图像时显示一个菜单,然后从显示的菜单中选择要执行的操作.

这是我的代码:

package Kazemi.Alireza.scada;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.app.FragmentManager;
import android.content.Context;
import android.graphics.Typeface;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;


@SuppressLint("NewApi")
public class CitiesTab extends Fragment {

AnimationDrawable[] frameAnimation;
ImageAdapter ia;
GridView gridView;
int in;

public View onCreateView(LayoutInflater …
Run Code Online (Sandbox Code Playgroud)

android android-gridview

18
推荐指数
1
解决办法
3万
查看次数

android网格视图从右到左放置项目

我正在使用阿拉伯语版本的Android应用程序.

在其中一个接口中,我有gridView.因此,要以正确的顺序显示项目,我必须从右到左显示GridView中的项目(以及从顶部到底部的corse).为此,我尝试在GridView中添加这些属性:

android:gravity="right"
android:layout_gravity="right"
Run Code Online (Sandbox Code Playgroud)

不幸的是,项目仍然从左到右显示.

有什么想法以正确的方式做到这一点?

android gridview arabic right-to-left android-gridview

18
推荐指数
2
解决办法
8870
查看次数

在Android应用程序中向GridView添加一组按钮

我有一个应用程序,将有5-15个按钮,具体取决于后端可用的内容.如何定义正确的GridView布局文件以包含一组按钮,每个按钮都有不同的文本和其他属性?每个按钮实际上都会将一个项目添加到购物车,因此onClick代码将是相同的,除了它添加到购物车的项目.

如何定义一个数组,以便我可以添加可变数量的按钮,但仍然用唯一的ID引用它们?我已经看过arrays.xml的例子,但是他们已经创建了一个预先设置的字符串数组.我需要一种方法来创建一个对象,而不是在布局或数组xml文件中定义文本.

更新 - 添加有关添加到GridView的信息

我想将它添加到GridView中,因此调用[addView方法](http://developer.android.com/reference/android/widget/AdapterView.html#addView (android.view.View,%20int )会导致an UnsupportedOperationException.我可以执行以下操作:

ImageButton b2 = new ImageButton(getApplicationContext());
b2.setBackgroundResource(R.drawable.img_3);
android.widget.LinearLayout container = (android.widget.LinearLayout) findViewById(R.id.lay);
container.addView(b2);
Run Code Online (Sandbox Code Playgroud)

但这并没有像我想的那样在网格中布局按钮.这可以在GridView中完成吗?

arrays android dynamic button android-gridview

16
推荐指数
3
解决办法
9万
查看次数

有限项目的无限卷轴

我有一个GridView5x50内的物品.

我需要向所有方向滚动它们,而不是在到达终点时停止,只是从顶部/左侧开始.

例如从左到右滚动

在滚动之前

1 2 3 4 5
6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)

滚动到右边后

5 1 2 3 4
10 6 7 8 9
Run Code Online (Sandbox Code Playgroud)

从上到下(或从下到上)

在滚动到底部之前

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)

滚动后

6 7 8 9 10
11 12 13 14 15
1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

我试着让它像GridView原生卷轴一样平滑滚动.

android android-layout android-gridview android-canvas android-view

16
推荐指数
3
解决办法
922
查看次数

如何在android中运行媒体扫描程序

我想在捕获图像时运行媒体扫描仪.捕获后,图像在网格视图中更新.为此,我需要运行媒体扫描仪.我找到了两个运行媒体扫描程序的解决方案,一个是广播 事件,另一个是运行媒体扫描程序类.我认为在Ice Cream Sandwich(4.0)中引入了媒体扫描程序类.在版本之前需要设置广播事件来运行媒体扫描程序.

任何人都可以指导我如何以正确的方式运行媒体扫描仪.

android android-camera android-gridview android-mediascanner

15
推荐指数
1
解决办法
2万
查看次数