이미지 및 관련 텍스트의 사용자 지정 gridview를 만들었습니다. 이미지를 클릭하면 새 DetailActivity에 표시되기를 원합니다. 하지만 표시하는 데 문제가 있습니다. gridview에서 항목을 클릭하면 앱이 충돌합니다.
누구든지 내 코드의 문제를 지적 할 수 있습니까?
이것은 Custom Grid Adapter의 코드입니다.
public class CustomAdapter extends BaseAdapter {
Context context;
int[] imagesId;
String[] names;
long imageId;
public static LayoutInflater layoutInflater = null;
public CustomAdapter(MainActivity mainActivity, int[] LimagesId, String[] Lnames) {
this.context = mainActivity;
this.imagesId = LimagesId;
this.names = Lnames;
this.layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return names.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
public class Holder {
TextView textView;
ImageView imageView;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final Holder holder = new Holder();
View rowView;
//define rows
rowView = layoutInflater.inflate(R.layout.program_list, null);
holder.imageView = (ImageView) rowView.findViewById(R.id.imageView1);
holder.textView = (TextView) rowView.findViewById(R.id.textView1);
holder.imageView.setImageResource(imagesId[position]);
holder.textView.setText(names[position]);
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "You clicked " + names[position], Toast.LENGTH_SHORT ).show();
imageId = getItemId(position);
Intent intent = new Intent(context, DetailsActivity.class);
intent.putExtra("image",imageId);
context.startActivity(intent);
}
});
return rowView; }
}
이것은 DetailActivity의 코드입니다.
public class DetailsActivity extends ActionBarActivity {
int[] imageId = {R.drawable.image1,R.drawable.image2,R.drawable.image1,R.drawable.image2,R.drawable.image3,R.drawable.image4,R.drawable.image5,R.drawable.image6,R.drawable.image7,R.drawable.image8,R.drawable.image9,R.drawable.image10};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
Intent intent = new Intent();
long position = intent.getLongExtra("image", R.drawable.image1);
ImageView imageView = (ImageView) findViewById(R.id.detail_imageView);
Integer pos = (int) (long) position;
imageView.setImageResource(imageId[pos]);
}
좋습니다. 코드에 많은 문제가 있습니다.
이렇게 변경하고 어떻게 진행되는지 알려주십시오. 오류가 더 있거나 누락 된 것이 있으면이 답변을 편집하겠습니다.
편집 : 글쎄, 당신은 대답의 코드를 약간 변경했기 때문에 일부 포인트가 관련이없는 것처럼 보일 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다