當前位置:首頁 » 安卓系統 » androidgridview分組

androidgridview分組

發布時間: 2024-08-31 16:32:26

❶ 如何設置 android gridview 怎麼設置 , 一些item可以點擊,另外.....

這個要在代碼中進行設置,基本上有兩種方式:

  1. 在GridView所在的 activity(或者fragment)中, 找到該View,監聽點擊事件:


    java">gridView.setOnItemClickListener(newAdapterView.OnItemClickListener(){
    @Override
    publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){
    //點擊item觸發,進行判斷,如果需要處理點擊,就進行處理,否則,什麼也不做
    if(/*處理點擊條件*/){
    //要做的事
    }
    }
    });
  2. 在自己寫的GridView對應的適配器中(一般繼承於BaseAdapter)的getView中進行判斷,如果是需呀處理的item, 就調用setOnClickListener,並定義相應的點擊事件,否則可以不綁定點擊事件。

❷ android ScrollVIew中嵌套GridView,如何顯示GridView

GridView(網格視圖)是按照行列的方式來顯示內容的,一般用於顯示圖片,圖片等內容,比如實現九宮格圖,用GridView是首選,也是最簡單的。主要用於設置Adapter。

1.GridView常用的XML屬性

屬性名稱 描述

android:columnWidth 設置列的寬度。

android:gravity 設置此組件中的內容在組件中的位置。可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多選,用「|」分開。

android:horizontalSpacing 兩列之間的間距。

android:numColumns 設置列數。

android:stretchMode 縮放模式。

android:verticalSpacing 兩行之間的間距。


2.實例1

main.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="fill_parent"
>
<GridView
android:id="@+id/GridView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:columnWidth="90dp"
android:numColumns="3"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
</LinearLayout>

運行效果:

❸ Android gridview動態添加一條數據,並且是放在第一個的位置,求大神分享下

gridview的adapter數據源是一個list,然後你想添加的時候用list.add(0,數據)把數據添加到第一個位置,然後adapter在notify一下就行了

❹ 為什麼android gridview只能顯示一行數據

因為在Android中,有這樣一個限制,兩ScrollView型的控制項不能相互嵌套。像ListView和GridView就都是ScrollView型的控制項。因為嵌套後,兩個ScrollView型控制項的滑動效果就喪失了,同時被嵌套控制項的高度也被限定為一行的高度。那我們還能不能嵌套兩個ScrollView型的控制項呢?肯定是可以的。方法有兩種:一是我們去需要自定義ListView或是GridView,並重寫其onMeasure()方法。如下:

public class NoScrollGridView extends GridView {
public NoScrollGridView(Context context) {
super(context);
}
public NoScrollGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
ListView也同理。
還有一種方法是我們重新動態地計算我們現在需要的高度。在我們調用Adapter的時候,我們獲得現在這個時候的GridView有多少個,單個GridView的高度,然後計算總高度。具體代碼如下:

/**
* 重新計算listView高度
* @param listView
*/
public static void (ListView listView) {
// 獲取ListView對應的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}

int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回數據項的數目
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0); // 計運算元項View 的寬高
totalHeight += listItem.getMeasuredHeight(); // 統計所有子項的總高度
}

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
// listView.getDividerHeight()獲取子項間分隔符佔用的高度
// params.height最後得到整個ListView完整顯示需要的高度
listView.setLayoutParams(params);
}
在我們setAdapter()的之前,我們調用上面的方法,如(accomplishmentStateListView);
因為我是在ListView中嵌套GridView,所以重新計算GridView的總高度的時候,要放在setAdapter(...GridViewAdapter)這個BaseAdapter的衍生類里。代碼如下:

/**
* 計算gridview高度
* @param gridView
*/
public static void (GridView gridView) {
// 獲取GridView對應的Adapter
ListAdapter listAdapter = gridView.getAdapter();
if (listAdapter == null) {
return;
}
int rows;
int columns = 0;
int horizontalBorderHeight = 0;
Class<?> clazz = gridView.getClass();
try {
// 利用反射,取得每行顯示的個數
Field column = clazz.getDeclaredField("mRequestedNumColumns");
column.setAccessible(true);
columns = (Integer) column.get(gridView);
// 利用反射,取得橫向分割線高度
Field horizontalSpacing = clazz
.getDeclaredField("mRequestedHorizontalSpacing");
horizontalSpacing.setAccessible(true);
horizontalBorderHeight = (Integer) horizontalSpacing.get(gridView);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
// 判斷數據總數除以每行個數是否整除。不能整除代表有多餘,需要加一行
if (listAdapter.getCount() % columns > 0) {
rows = listAdapter.getCount() / columns + 1;
} else {
rows = listAdapter.getCount() / columns;
}
int totalHeight = 0;
for (int i = 0; i < rows; i++) { // 只計算每項高度*行數
View listItem = listAdapter.getView(i, null, gridView);
listItem.measure(0, 0); // 計運算元項View 的寬高
totalHeight += listItem.getMeasuredHeight(); // 統計所有子項的總高度
}
ViewGroup.LayoutParams params = gridView.getLayoutParams();
params.height = totalHeight + horizontalBorderHeight * (rows - 1);// 最後加上分割線總高度
gridView.setLayoutParams(params);
}
這樣我們就可以在ListView中添加GridView了。。。
註:兩個SrcollView型的控制項可以是:

<ListView, GridView>;

<GridView,ListView>;

<ListView,ListView>;

<GridView, GridView>;

<ListView, ScrollView>;

<ScrollView,ListView>;

<GridView, ScrollView>;

<ScrollView, GridView>;

<ScrollView, ScrollView>;

... ...

❺ 急求!Android,gridView,兩行間距過大(一頁)。android:horizontalSpacing="2dip"試過無效

android:horizontalSpacing 在Gridview排列的時候不是優先考慮的,GridView有個列數的控制,在當前GridView的寬度下,能展示的完設置的列數則平均分配,在當前不夠分配的時候才會考慮那個android:horizontalSpacing設置的值

❻ android的:tableLayout和gridview有什麼不同

tableLayout是表格布局,用的比較少,實現如下圖所示效果

熱點內容
安卓綠聯和倍思哪個品牌好 發布:2024-11-25 03:54:45 瀏覽:889
androidpack 發布:2024-11-25 03:53:17 瀏覽:445
阿里雲sql 發布:2024-11-25 03:53:15 瀏覽:713
伺服器為什麼一段時間就連不上 發布:2024-11-25 03:44:36 瀏覽:768
圖片上下FTP是什麼 發布:2024-11-25 03:43:18 瀏覽:759
微服務無狀態存儲管理 發布:2024-11-25 03:34:43 瀏覽:22
行上傳 發布:2024-11-25 03:33:07 瀏覽:484
催款訪問 發布:2024-11-25 03:33:06 瀏覽:999
dhcp伺服器無法連接ip地址 發布:2024-11-25 03:23:09 瀏覽:949
ts伺服器地址 發布:2024-11-25 03:19:26 瀏覽:295