カスタム Gird ビューに苦労しています。Custom Gird ビューでは正確ではありませんが、子ビューのクリック イベントです。
主な 2 つのクエリ:
最初 :
問題は、グリッドに単純な画像ビューとテキストビューを追加し、そのアイテムのいずれかをクリックしてそのアイテムの位置を表示する場合です.しかし、グリッドに2つのボタンを追加すると、テキストビューを置き換えるボタンは、アイテム。
2番目 :
画像と2つのボタンのような3つのビューすべてのクリックイベントを取得したい. 画像をクリックすると、2つのボタンと同じように何らかのタスクを実行する必要があります。
私はこのコードを持っている参照してください。
メイン Java :
package com.mkyong.android;
import java.util.ArrayList;
import com.mkyong.android.adapter.ImageAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Toast;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
public class GridViewActivity extends Activity {
GridView gridView;
private ArrayList<String> listCountry;
private ArrayList<Integer> listFlag;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridView = (GridView) findViewById(R.id.gridView1);
prepareList();
gridView.setAdapter(new ImageAdapter(this, listCountry, listFlag));
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
ImageView img = (ImageView) v
.findViewById(R.id.grid_item_image);
Toast.makeText(getApplicationContext(), "item" + img.getTag(),
Toast.LENGTH_SHORT).show();
}
});
}
public void prepareList() {
listCountry = new ArrayList<String>();
listCountry.add("india");
listCountry.add("Brazil");
listCountry.add("Canada");
listCountry.add("China");
listCountry.add("France");
listCountry.add("Germany");
listCountry.add("Iran");
listCountry.add("Italy");
listCountry.add("Japan");
listCountry.add("Korea");
listCountry.add("Mexico");
listCountry.add("Netherlands");
listCountry.add("Portugal");
listCountry.add("Russia");
listCountry.add("Saudi Arabia");
listCountry.add("Spain");
listCountry.add("Turkey");
listCountry.add("United Kingdom");
listFlag = new ArrayList<Integer>();
listFlag.add(R.drawable.sample_thumb_1);
listFlag.add(R.drawable.sample_thumb_2);
listFlag.add(R.drawable.sample_thumb_3);
listFlag.add(R.drawable.sample_thumb_4);
listFlag.add(R.drawable.sample_thumb_5);
listFlag.add(R.drawable.sample_thumb_6);
listFlag.add(R.drawable.sample_thumb_7);
listFlag.add(R.drawable.sample_thumb_8);
listFlag.add(R.drawable.sample_thumb_9);
listFlag.add(R.drawable.sample_thumb_10);
listFlag.add(R.drawable.sample_thumb_11);
listFlag.add(R.drawable.sample_thumb_12);
listFlag.add(R.drawable.sample_thumb_13);
listFlag.add(R.drawable.sample_thumb_14);
listFlag.add(R.drawable.sample_thumb_15);
listFlag.add(R.drawable.sample_thumb_16);
listFlag.add(R.drawable.sample_thumb_17);
listFlag.add(R.drawable.sample_thumb_18);
}
}
image_adp:
package com.mkyong.android.adapter;
import java.util.ArrayList;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.mkyong.android.R;
public class ImageAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<Integer> listFlag;
private ArrayList<String> listCountry;
public ImageAdapter(Activity activity, ArrayList<String> listCountry,
ArrayList<Integer> listFlag) {
this.activity = activity;
this.listCountry = listCountry;
this.listFlag = listFlag;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return listCountry.size();
}
@Override
public String getItem(int position) {
// TODO Auto-generated method stub
return listCountry.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public static class ViewHolder {
public ImageView imgViewFlag;
public TextView txt;
public Button btn1, btn2;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder view;
LayoutInflater inflator = activity.getLayoutInflater();
if (convertView == null) {
view = new ViewHolder();
convertView = inflator.inflate(R.layout.grid_item, null);
view.imgViewFlag = (ImageView) convertView
.findViewById(R.id.imageView1);
view.txt = (TextView) convertView
.findViewById(R.id.grid_item_label);
view.btn1 = (Button) convertView.findViewById(R.id.button1);
view.btn2 = (Button) convertView.findViewById(R.id.button2);
convertView.setTag(view);
} else {
view = (ViewHolder) convertView.getTag();
}
view.imgViewFlag.setImageResource(listFlag.get(position));
view.imgViewFlag.setTag(listFlag.get(position),
"" + listFlag.get(position));
// view.txt.setText(listCountry.get(position));
return convertView;
}
}
grid_item.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="100dp"
android:layout_height="120dp"
android:src="@drawable/ic_launcher" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="1dp"
android:background="@drawable/like" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="1dp"
android:background="@drawable/dislike" />
<TextView
android:id="@+id/grid_item_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</LinearLayout>
私は何かを見つけようとしますが、それで成功することはありません。これを達成する方法。
私のクエリを訪問していただきありがとうございます