ورود

View Full Version : سوال درباره گرید ویو



esmail3309
یک شنبه 26 مرداد 1393, 08:03 صبح
سلام دوستان

این کد گرید ویو منه
ولی نمیدونم OnItemClickListener کجا قرار بدم
لطفا راهنمایی کنید


MainActivity::

package com.manish.customgridview;

import java.util.ArrayList;


import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;



public class MainActivity extends Activity {
GridView gridView;
ArrayList<Item> gridArray = new ArrayList<Item>();
CustomGridViewAdapter customGridAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENT ATION_PORTRAIT);
setContentView(R.layout.activity_main);



//set grid view item
Bitmap homeIcon = BitmapFactory.decodeResource(this.getResources(), R.drawable.home);
Bitmap userIcon = BitmapFactory.decodeResource(this.getResources(), R.drawable.personal);
Bitmap btnIcon = BitmapFactory.decodeResource(this.getResources(), R.drawable.zero_1_1_1);
Bitmap btnIcon_2 = BitmapFactory.decodeResource(this.getResources(), R.drawable.dokme_2);


gridArray.add(new Item(homeIcon,"Home"));
gridArray.add(new Item(userIcon,"User"));
gridArray.add(new Item(homeIcon,"House"));
gridArray.add(new Item(userIcon,"Friend"));
gridArray.add(new Item(homeIcon,"Home"));
gridArray.add(new Item(userIcon,"Personal"));
gridArray.add(new Item(homeIcon,"Home"));
gridArray.add(new Item(userIcon,"User"));
gridArray.add(new Item(homeIcon,"Building"));
gridArray.add(new Item(userIcon,"User"));
gridArray.add(new Item(homeIcon,"Home"));
gridArray.add(new Item(userIcon,"xyz"));
gridArray.add(new Item(btnIcon," "));
gridArray.add(new Item(btnIcon," "));



gridView = (GridView) findViewById(R.id.gridView1);
customGridAdapter = new CustomGridViewAdapter(this, R.layout.row_grid, gridArray);
gridView.setAdapter(customGridAdapter);



}

}




CustomGridViewAdapter::

package com.manish.customgridview;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomGridViewAdapter extends ArrayAdapter<Item> {
Context context;
int layoutResourceId;
ArrayList<Item> data = new ArrayList<Item>();

public CustomGridViewAdapter(Context context, int layoutResourceId,
ArrayList<Item> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
RecordHolder holder = null;

if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);

holder = new RecordHolder();
holder.txtTitle = (TextView) row.findViewById(R.id.item_text);
holder.imageItem = (ImageView) row.findViewById(R.id.item_image);
row.setTag(holder);
} else {
holder = (RecordHolder) row.getTag();
}

Item item = data.get(position);
holder.txtTitle.setText(item.getTitle());
holder.imageItem.setImageBitmap(item.getImage());
return row;

}

static class RecordHolder {
TextView txtTitle;
ImageView imageItem;

}
}







راستی یه چیز دیگه
میتونید یک گرید ویو خوب بهم معرفی کنید؟
ممنون

harani
یک شنبه 26 مرداد 1393, 09:00 صبح
OnItemClickListener رو بعد از setadapter بگذارید .

esmail3309
یک شنبه 26 مرداد 1393, 09:17 صبح
من الان کدمو اینجوری کامل کردم:

package com.manish.customgridview;

import java.util.ArrayList;


import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.Toast;



public class MainActivity extends Activity {
GridView gridView;
ArrayList<Item> gridArray = new ArrayList<Item>();
CustomGridViewAdapter customGridAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENT ATION_PORTRAIT);
setContentView(R.layout.activity_main);



//set grid view item
Bitmap homeIcon = BitmapFactory.decodeResource(this.getResources(), R.drawable.home);
Bitmap userIcon = BitmapFactory.decodeResource(this.getResources(), R.drawable.personal);
Bitmap btnIcon = BitmapFactory.decodeResource(this.getResources(), R.drawable.zero_1_1_1);
Bitmap btnIcon_2 = BitmapFactory.decodeResource(this.getResources(), R.drawable.dokme_2);


gridArray.add(new Item(homeIcon,"Home"));
gridArray.add(new Item(userIcon,"User"));
gridArray.add(new Item(homeIcon,"House"));
gridArray.add(new Item(userIcon,"Friend"));
gridArray.add(new Item(homeIcon,"Home"));
gridArray.add(new Item(userIcon,"Personal"));
gridArray.add(new Item(homeIcon,"Home"));
gridArray.add(new Item(userIcon,"User"));
gridArray.add(new Item(homeIcon,"Building"));
gridArray.add(new Item(userIcon,"User"));
gridArray.add(new Item(homeIcon,"Home"));
gridArray.add(new Item(userIcon,"xyz"));
gridArray.add(new Item(btnIcon," "));
gridArray.add(new Item(btnIcon," "));



gridView = (GridView) findViewById(R.id.gridView1);
customGridAdapter = new CustomGridViewAdapter(this, R.layout.row_grid, gridArray);
gridView.setAdapter(customGridAdapter);


gridView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(), "gadsfadsf",
Toast.LENGTH_SHORT).show();
Log.d("Main", "onItemClick");
}
});
}

}



ولی ایکلیپس از OnItemClickListener() و View مربود به setOnItemClickListener ارور میگیره.چرا؟

خیلی وقته گیرشم میشه کد برام کامل کنید؟

esmail3309
یک شنبه 26 مرداد 1393, 09:20 صبح
حتی وقتی از این کد هم استفاده میکنم بازم از OnItemClickListener() و View مربود به setOnItemClickListener ارور میگیره!!


gridView.setOnItemClickListener(new OnItemClickListener(){ @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent intent = new Intent();
switch(arg2){
case 0: intent.setClass(arg1.getContext(), activity1.class ); startActivity(intent); break;
case 1: intent.setClass(arg1.getContext(), activity2.class ); startActivity(intent); break;
case 2: intent.setClass(arg1.getContext(), activity3.class); startActivity(intent); break;
case 3: intent.setClass(arg1.getContext(), activity4.class ); startActivity(intent); break;
}

}});