【问题标题】:How to place an Image on a Customize ListView如何在自定义 ListView 上放置图像
【发布时间】:2017-04-09 02:34:00
【问题描述】:

我是一个新的 android,我想制作一个 Documents Scanner 应用程序。所以我使用 GitHub 库的裁剪功能知道我想在列表视图上显示裁剪图像。为此,我也使用了来自 github 的 Universal Image Loader Library,但仍然有一些错误。这个库我把它放在一个 libs 文件夹中

请给我一些简单的解决方案

这是我的主要活动

public class MainActivity extends AppCompatActivity {
Button btn;
Context context = this;
public static final int REQUEST_Code = 99;
ImageView mImageView;
int prefrences = ScanConstants.OPEN_CAMERA;
ListView mListView;
ArrayAdapter<String > images_adapter;
ImageLoader imageLoader;
ArrayList images_Uri;
DisplayImageOptions options;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mListView= (ListView) findViewById(R.id.mListView);
    btn = (Button) findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showdialogebox();

        }
    });


}

private void showdialogebox() {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Take Phote");
    final String item[] = {"Take form cam", "Take form file"};
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,    android.R.layout.select_dialog_item, item);
    AlertDialog.Builder builder1 = builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

            if (which == 0) {
                Intent intent = new Intent(getApplicationContext(), ScanActivity.class);
                intent.putExtra(ScanConstants.OPEN_INTENT_PREFERENCE, prefrences);
                startActivityForResult(intent, REQUEST_Code);

            }

        }
    });
    builder.show();
}


@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Uri uri = data.getExtras().getParcelable(ScanConstants.SCANNED_RESULT);

     getContentResolver().delete(uri, null, null);

    images_Uri.add(uri);
    Image_Adapter adapter=new Image_Adapter(getApplicationContext(),R.layout.single_image_view,images_Uri);
    mListView.setAdapter(adapter);
}
}

这是我的 Image_Adapter 类代码

public class Image_Adapter extends ArrayAdapter<ViewHolderImage> {
Context context;
int resourceid;
public final static String IMAGE_PATH = Environment
        .getExternalStorageDirectory().getPath() + "/scanSample";
ArrayList images=null;
public Image_Adapter(Context context, int resource, ArrayList images) {
    super(context,resource,images);
    this.context=context;
    this.resourceid=resource;
    this.images=images;
}
ViewHolderImage holderImage=null;

@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView==null){
        LayoutInflater inflater=((Activity)context).getLayoutInflater();
        convertView=inflater.inflate(resourceid,parent,false);
        holderImage=new ViewHolderImage();
       holderImage.imageView=(ImageView)convertView.findViewById(R.id.mImageView);
        convertView.setTag(holderImage);
    }else 
{
        holderImage=(ViewHolderImage)convertView.getTag();
    }
    holderImage.imageView.setMaxWidth(100);
    holderImage.imageView.setMaxWidth(100);
    ImageLoader imageLoader =null;
    imageLoader.displayImage(IMAGE_PATH,holderImage.imageView);
    return convertView;
}
}

ViewHolderImage 类代码是

enter code here
  public class ViewHolderImage {
         ImageView imageView;
     }

这是日志猫上的错误显示`

    >>>> Normal User
           11-24 22:22:11.180 25628-25628/com.example.hassanjan.documentsscannerapp1 E/dalvikvm:     >>>>> com.example.hassanjan.documentsscannerapp1 [ userId:0 | appId:10236 ]
           11-24 22:22:11.490 25628-25628/com.example.hassanjan.documentsscannerapp1 E/InstantRun: Could not find slices in APK; aborting.
           11-24 22:22:11.720 25628-25628/com.example.hassanjan.documentsscannerapp1 E/dalvikvm:  Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method  android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering
           11-24 22:22:16.906 25628-25628/com.example.hassanjan.documentsscannerapp1  E/ViewRootImpl: sendUserActionEvent() mView == null
           11-24 22:22:33.664 25628-25628/com.example.hassanjan.documentsscannerapp1 E/ViewRootImpl: sendUserActionEvent() mView == null
           11-24 22:22:42.223 25628-25628/com.example.hassanjan.documentsscannerapp1 E/AndroidRuntime: FATAL EXCEPTION: main
             Process: com.example.hassanjan.documentsscannerapp1, PID: 25628                                                                                              java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=99, result=-1, data=Intent { (has extras) }} to activity  {com.example.hassanjan.documentsscannerapp1/com.example.hassanjan.documentsscannerapp1.MainActivity}: java.lang.NullPointerException
             at android.app.ActivityThread.deliverResults(ActivityThread.java:3580)
            at android.app.ActivityThread.handleSendResult(ActivityThread.java:3623)
             at android.app.ActivityThread.access$1400(ActivityThread.java:169)
              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1328)
             at android.os.Handler.dispatchMessage(Handler.java:102)
          at android.os.Looper.loop(Looper.java:146)
          at android.app.ActivityThread.main(ActivityThread.java:5487)
           at java.lang.reflect.Method.invokeNative(Native Method)
          at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
         dalvik.system.NativeStart.main(Native Method)
          Caused by: java.lang.NullPointerException
         at    com.example.hassanjan.documentsscannerapp1.MainActivity.onActivityResult(MainActivity.java:114)
          at android.app.Activity.dispatchActivityResult(Activity.java:5643)
          at android.app.ActivityThread.deliverResults(ActivityThread.java:3576)
          at android.app.ActivityThread.handleSendResult(ActivityThread.java:3623) 
             at android.app.ActivityThread.access$1400(ActivityThread.java:169) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1328) 
          at android.os.Handler.dispatchMessage(Handler.java:102) 
           at android.os.Looper.loop(Looper.java:146) 
       at android.app.ActivityThread.main(ActivityThread.java:5487) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
           at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
     at dalvik.system.NativeStart.main(Native Method) 

**在主要活动的 Hassanjan114 上显示错误**

     images_Uri.add(uri);

【问题讨论】:

  • 请分享错误。根据我的理解,您应该在onCreate() 中设置ListView 适配器。另外,我在Adapter 中没有看到任何对notifyDataSetChanged() 的调用。
  • 你应该使用 gradle 而不是将库放在 libs 文件夹中。
  • 您还必须为列表视图制作自定义布局

标签: android android-layout listview github android-studio-2.2


【解决方案1】:

您可以通过这种方式在列表视图中设置图像,在您的等级文件中添加compile 'com.github.bumptech.glide:glide:3.7.0',这是我用来将图像视图添加到列表视图的一段代码

 ImageView circleImageView = (ImageView) view.findViewById(R.id.profile_image);

            Mediafileinfo mediafileinfo =(Mediafileinfo)getItem(position);


    Glide.with(getContext()).load(mediafileinfo.getAlbum_art_uri())
            .thumbnail(1f)
            .crossFade()
            .override(50,50)  //(the size of the image)
             .placeholder(R.drawable.music)
             .diskCacheStrategy(DiskCacheStrategy.SOURCE)
             .into(circleImageView);

这里是制作自定义列表视图的教程link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-09
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多