여기 내 활동에 내 코드가 한 줄에 2 열이하기의 GridView를 설정안드로이드는
public class ImageAdapter extends BaseAdapter {
private Context context;
private final String[] mobileValues;
private TextView t;
public ImageAdapter(Context context, String[] mobileValues) {
this.context = context;
this.mobileValues = mobileValues;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from mobile.xml
gridView = inflater.inflate(R.layout.mobile, null);
// set value into textview
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);
textView.setText(mobileValues[position]);
Button b = (Button) gridView.findViewById(R.id.grid_item_button);
Button b2 = (Button) gridView.findViewById(R.id.grid_item_button2);
t = (TextView) gridView
.findViewById(R.id.grid_item_number);
b.setOnClickListener(new MyOnClickListener(t));
b2.setOnClickListener(new MyOnClickListenerm(t));
// set image based on selected text
ImageView imageView = (ImageView) gridView
.findViewById(R.id.grid_item_image);
String mobile = mobileValues[position];
if (mobile.equals("Windows")) {
imageView.setImageResource(R.drawable.windows_logo);
} else if (mobile.equals("iOS")) {
imageView.setImageResource(R.drawable.ios_logo);
} else if (mobile.equals("Blackberry")) {
imageView.setImageResource(R.drawable.blackberry_logo);
} else {
imageView.setImageResource(R.drawable.android_logo);
}
} else {
gridView = (View) convertView;
}
return gridView;
}
private void clickedButton(TextView tv){
int num = Integer.parseInt(tv.getText().toString());
++num;
tv.setText(Integer.toString(num));
}
private void clickedButtonm(TextView tv){
int num = Integer.parseInt(tv.getText().toString());
if(num>0){
--num;
tv.setText(Integer.toString(num));
}
}
@Override
public int getCount() {
return mobileValues.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
class MyOnClickListener implements OnClickListener{
public final TextView tv;
public MyOnClickListener(TextView tv){
this.tv=tv;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
clickedButton(tv);
}
}
class MyOnClickListenerm implements OnClickListener{
public final TextView tv;
public MyOnClickListenerm(TextView tv){
this.tv=tv;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
clickedButtonm(tv);
}
}
}
내 mobile.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp" >
<ImageView
android:id="@+id/grid_item_image"
android:layout_width="wrap_content"
android:layout_height="74dp"
android:layout_marginRight="10px"
android:layout_weight="1.44"
android:src="@drawable/android_logo" >
</ImageView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/grid_item_button"
android:layout_width="30dp"
android:layout_height="23dp"
android:text=" " />
<TextView
android:id="@+id/grid_item_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="0" />
<Button
android:id="@+id/grid_item_button2"
android:layout_width="30dp"
android:layout_height="23dp"
android:text=" " />
</LinearLayout>
<TextView
android:id="@+id/grid_item_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5px"
android:text="@+id/label"
android:textSize="15px" >
</TextView>
</LinearLayout>
행 당 2 개의 항목을 삐뚤어지지 않게하는 것이 어렵다는 것을 알았습니다. 당신은 또한 다음과 같은 방법으로 의 GridView에서 프로그래밍 방식으로 열 수를 설정할 수 있습니다 http://www.mediafire.com/?25vae87fvahu4wp
활동에 대한 XML (하나를 제시해주십시오 실제 GridView 정의). 간단하게'android : numColumns = "2"'를 그 정의에 추가 할 수 있어야한다. –