androidgridview事件處理
① android中添加了一個GridView,在GridView中的每一個Item中,又有一個按鈕,要給每一個按鈕添加點擊事件
請參考我以前寫的一篇帖子,是給listview的,但好像不能使用button,最好把button換成imageview,反正imageview也是能點擊的。你遇到這個問題是因為你給每一個item設置了事件,然後當你點擊這個item的時候,裡面的button被點中了。解決辦法是繼承view,寫一個自定義的view,重寫他的 setPressed 方法,這個方法裡面判斷它在點中的同時是不是父view也被點中了,如果父view也被點中的話,之間return,否則調用super的setpressed方法。這樣就能使你的子view不在父view點中的時候獲得事件。帖子在http://blog.csdn.net/huihuangui/article/details/6768629
② android使用gridview布局setOnItemClickListener中如何使用OnClickListener按鈕事件
難道setOnItemClickListener不就是GridView的點擊事件?為什麼還要逗祥OnClickListener?難道旅指扒內部還有拆昌布局?
③ android gridview圖片點擊事件設置
首先,應該是OnItemClickListener吧。
這個事件里有4個參鄭飢數,public
void
onItemClick(AdapterView<?>
parent,
View
griditem,
int
position,long
arg3),其中griditem指你點擊的項;position指的是你點擊的項喊源返在gridview數據源中的索引。
如果裂消你想改變原來的圖片,則可以這么做(假設你gridview中item的布局文件里只有一個ImageView):
ImageView
image=(ImageView)griditem;
image.setBackgroundDrawable(R.drawable.newimage);//這里寫新圖片資源名稱
④ android gridview的監聽事件不起作用啊
gridView事件處理不了,那說明代碼寫的有問題了。
1.關於Android事件構成
在Android中,事件主要包括點按、長按、拖拽、滑動等,點按又包括單擊和雙擊,另外還包括單指操作和多指操作。所有這些都構成了Android中的事件響應。總的來說,所有的事件都由如下三個部分作為基礎:
1.按下(ACTION_DOWN)
2.移動(ACTION_MOVE)
3.抬起(ACTION_UP)
所有的操作事件首先必須執行的是按下操作(ACTIONDOWN),之後所有的操作都是以按下操作作為前提,當按下操作完成後,接下來可能是一段移動(ACTIONMOVE)然後抬起(ACTION_UP),或者是按下操作執行完成後沒有移動就直接抬起。這一系列的動作在Android中都可以進行控制。
2.事件的處理API
在View和ViewGroup中都存在dispatchTouchEvent和onTouchEvent方法,但是在ViewGroup中還有一個onInterceptTouchEvent方法,在Android中,所有的事件都是從開始經過傳遞到完成事件的消費,這些方法的返回值就決定了某一事件是否是繼續往下傳,還是被攔截了,或是被消費了。
public boolean dispatchTouchEvent(MotionEvent event)
public boolean onTouchEvent(MotionEvent event)
public boolean onInterceptTouchEvent(MotionEvent event)
3.事件處理API的說明
dispatchTouchEvent方法用於事件的分發,Android中所有的事件都必須經過這個方法的分發,然後決定是自身消費當前事件還是繼續往下分發給子控制項處理。返回true表示不繼續分發,事件沒有被消費。返回false則繼續往下分發,如果是ViewGroup則分發給onInterceptTouchEvent進行判斷是否攔截該事件。
onTouchEvent方法用於事件的處理,返回true表示消費處理當前事件,返回false則不處理,交給子控制項進行繼續分發。
onInterceptTouchEvent是ViewGroup中才有的方法,View中沒有,它的作用是負責事件的攔截,返回true的時候表示攔截當前事件,不繼續往下分發,交給自身的onTouchEvent進行處理。返回false則不攔截,繼續往下傳。
⑤ android gridview 圖片單擊事件 求助
寫監聽就悔氏好了啊。
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
//這裡面的arg2就是喚前喊你和野單擊的圖標是第幾個(第一個 arg2 = 0)
}
}
⑥ 如何設置 android gridview 怎麼設置 , 一些item可以點擊,另外.....
這個要在代碼中進行設置,基本上有兩種方式:
在GridView所在的 activity(或者fragment)中, 找到該View,監聽點擊事件:
java">gridView.setOnItemClickListener(newAdapterView.OnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){
//點擊item觸發,進行判斷,如果需要處理點擊,就進行處理,否則,什麼也不做
if(/*處理點擊條件*/){
//要做的事
}
}
});在自己寫的GridView對應的適配器中(一般繼承於BaseAdapter)的getView中進行判斷,如果是需呀處理的item, 就調用setOnClickListener,並定義相應的點擊事件,否則可以不綁定點擊事件。
⑦ android GridView怎麼實現合並行或者達到同樣的效果
GridView跟ListView都是比較常用的多控制項布局,而GridView更是實現九宮圖的首選!本文就是介紹如何使用GridView實現九宮圖。GridView的用法很多,網上介紹最多的方法就是自己實現一個ImageAdapter繼承BaseAdapter,再供GridView使用,類似這種的方法本文不再重復,本文介紹的GridView用法跟前文ListView的極其類似
本文需要添加/修改3個文件:main.xml、night_item.xml、JAVA源代碼。
main.xml源代碼如下,本身是個GirdView,用於裝載Item:
[xhtml] view plainprint?
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:columnWidth="90dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
介紹一下裡面的某些屬性:
android:numColumns="auto_fit" ,GridView的列數設置為自動
android:columnWidth="90dp",每列的寬度,也就是Item的寬度
android:stretchMode="columnWidth",縮放與列寬大小同步
android:verticalSpacing="10dp",兩行之間的邊距,如:行一(NO.0~NO.2)與行二(NO.3~NO.5)間距為10dp
android:horizontalSpacing="10dp",兩列之間的邊距。
接下來介紹 night_item.xml,這個XML跟前面ListView的ImageItem.xml很類似:
[xhtml] view plainprint?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:paddingBottom="4dip" android:layout_width="fill_parent">
<ImageView
android:layout_height="wrap_content"
android:id="@+id/ItemImage"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true">
</ImageView>
<TextView
android:layout_width="wrap_content"
android:layout_below="@+id/ItemImage"
android:layout_height="wrap_content"
android:text="TextView01"
android:layout_centerHorizontal="true"
android:id="@+id/ItemText">
</TextView>
</RelativeLayout>
最後就是JAVA的源代碼了,也跟前面的ListView的JAVA源代碼很類似,不過多了「選中」的事件處理:
[java] view plainprint?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView) findViewById(R.id.gridview);
//生成動態數組,並且轉入數據
ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();
for(int i=0;i<10;i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", R.drawable.icon);//添加圖像資源的ID
map.put("ItemText", "NO."+String.valueOf(i));//按序號做ItemText
lstImageItem.add(map);
}
//生成適配器的ImageItem <====> 動態數組的元素,兩者一一對應
SimpleAdapter saImageItems = new SimpleAdapter(this, //沒什麼解釋
lstImageItem,//數據來源
R.layout.night_item,//night_item的XML實現
//動態數組與ImageItem對應的子項
new String[] {"ItemImage","ItemText"},
//ImageItem的XML文件裡面的一個ImageView,兩個TextView ID
new int[] {R.id.ItemImage,R.id.ItemText});
//添加並且顯示
gridview.setAdapter(saImageItems);
//添加消息處理
gridview.setOnItemClickListener(new ItemClickListener());
}
//當AdapterView被單擊(觸摸屏或者鍵盤),則返回的Item單擊事件
class ItemClickListener implements OnItemClickListener
{
public void onItemClick(AdapterView<?> arg0,//The AdapterView where the click happened
View arg1,//The view within the AdapterView that was clicked
int arg2,//The position of the view in the adapter
long arg3//The row id of the item that was clicked
) {
//在本例中arg2=arg3
HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2);
//顯示所選Item的ItemText
setTitle((String)item.get("ItemText"));
}
}
⑧ android的gridview 事件監聽報錯
你的item沒有獲取到,item為NULL。然後在下面你用item.get方法就報空指針異常了。
⑨ 如何模擬android 中GridView的選中item的事件
gridView.setOnItemClickListener(newAdapterView.OnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){
//dosomething
}
});
⑩ android gridview 用button怎麼每點擊事件
可以自定義adpter,adpter裡面的getView()方法里不是會初始化button嗎,然後再嘩做直接調用該button的實例,button.setOnClickListener(),在其監聽實踐中處理你要處理的旦蘆激東東,
public View getView(int position, View convertView, ViewGroup parent) {
Button button = findViewById.....
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
/模襪/處理事件
}
});
}