이미지와 텍스트가있는 사용자 정의 listview가 있습니다. 글라이드 라이브러리를 사용하여 Listview에 이미지를로드하고 있습니다. 때로는 이미지가 없으면 텍스트 만 표시됩니다. 이제 공유 의도를 사용하여 이미지 뷰와 텍스트를 공유하고 싶습니다.이 목적으로 버튼을 만들었습니다. 단추에 대한 Onclick Listener를 만들었으며 Listview의 각 항목과 함께 표시됩니다. 버튼을 클릭하면 프로세스에 이미지 뷰를 보내고 비트 맵으로 변환 한 다음 공유합니다. 여기에서 문제는 버튼을 클릭 할 때 특정 위치의 이미지 뷰가 선택된 다른 이미지 뷰 대신 선택된 상태입니다. 도와주세요.Listview에서 버튼을 클릭 한 위치에서 올바른 이미지 뷰를 얻는 방법
ImageView에 OnItem 리스너를 사용하여 전체 화면으로 표시하고 확대/축소 할 수 있습니다.
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final descusers du = dusers.get(position);
String username = du.loginname;
String descCrip=du.descCrip;
Limage = du.image;
long Ptime = du.Ptime;
profile = du.profile;
if(convertView==null) {
viewholder = new Viewholder();
convertView = LayoutInflater.from(ds).inflate(R.layout.customlist, null);
viewholder.uname = (TextView) convertView.findViewById(R.id.username);
viewholder.desc = (TextView) convertView.findViewById(R.id.description);
viewholder.time = (TextView)convertView.findViewById(R.id.time);
viewholder.iview = (ImageView) convertView.findViewById(R.id.imageList);
viewholder.civ = (CircleImageView)convertView.findViewById(R.id.profile_image);
viewholder.share = (TextView)convertView.findViewById(R.id.share);
Glide.with(convertView.getContext()).load(du.profile).placeholder(R.drawable.place).dontAnimate()
.centerCrop().signature(new StringSignature(String.valueOf(System.currentTimeMillis())))
.into(viewholder.civ);
convertView.setTag(viewholder);
}else {
viewholder = (Viewholder) convertView.getTag();
}
viewholder.uname.setText(username);
viewholder.desc.setText(descCrip);
if (!Patterns.WEB_URL.matcher(Limage).matches()) {
// viewholder.progress.setVisibility(View.GONE);
viewholder.iview.setVisibility(View.GONE);
} else {
Glide.with(convertView.getContext()).load(Limage).centerCrop().diskCacheStrategy(DiskCacheStrategy.ALL).into(viewholder.iview);
viewholder.iview.setVisibility(View.VISIBLE);
}
final View finalConvertView = convertView;
viewholder.iview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Dialog builder = new Dialog(listdisplay, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
builder.requestWindowFeature(Window.FEATURE_NO_TITLE);
builder.getWindow().setBackgroundDrawable(
new ColorDrawable(Color.BLACK));
builder.setContentView(R.layout.imager);
ImageView image = (ImageView) builder.findViewById(R.id.image);
Glide.with(finalConvertView.getContext()).load(du.image)
.diskCacheStrategy(DiskCacheStrategy.ALL).into(image);
builder.show();
}
});
viewholder.share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//onShareItem(v);
Uri bmpUri = getLocalBitmapUri(viewholder.iview);
if (bmpUri != null) {
// Construct a ShareIntent with link to image
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
shareIntent.setType("image/*");
// Launch sharing dialog for image
listdisplay.startActivity(Intent.createChooser(shareIntent, "Share Image"));
} else {
// ...sharing failed, handle error
}
}
});
return convertView;
}
버튼을 클릭 한 위치에서 올바른 이미지 뷰를 얻는 방법.
어댑터 외부에서 onclick 수신기를 전달할 수 있습니다. [내가 전에 게시 한 답변보기] http://stackoverflow.com/questions/38710179/how-to-implement-onclick-method-on-imageview/38710636#38710636 – kggoh
어댑터 생성자를 보여주세요. –
@RahulChaudhary - DescAdapter (listdisplay ds, ArrayList dusers, 활동 목록 표시) { this.ds = ds; this.dusers = dusers; this.listdisplay = listdisplay; } –
user2269164