【问题标题】:Display data vertically in ListView在 ListView 中垂直显示数据
【发布时间】:2014-05-30 18:22:12
【问题描述】:

我创建了一个 android 应用程序,我想在 ListView 中垂直显示一些图像数据。

如何实现?

我尝试使用此代码-

<LinearLayout
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="360dp"
    android:layout_above="@+id/relativeLayout2"
    android:layout_below="@+id/relativeLayout1"
    android:gravity="center"
    android:orientation="vertical" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="left|top"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="15dp"
        app:layout_gravity="fill_vertical"
        android:entries="@array/country_image_list" >
    </ListView>
</LinearLayout>

【问题讨论】:

  • 图像数据垂直意味着......?你能说清楚吗?
  • 表示图片在Listview中垂直滚动。
  • HorizontalScrollView 将满足您的要求。
  • 是的,请详细说明这个问题,如果您尝试过一些代码,那么也发布......
  • 能发一下你想要实现的截图吗

标签: android listview vertical-scrolling


【解决方案1】:
public class ItemImagesAdapter extends BaseAdapter {

private Context context;
private ArrayList<String> paths;
private ImageLoader iml;

public ItemImagesAdapter(FragmentActivity activity, ArrayList<String> image_paths) {
    context = activity;
    paths = image_paths;
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(activity).build();
    ImageLoader.getInstance().init(config);
    iml = ImageLoader.getInstance();
}

@Override
public int getCount() {
    return paths.size();
}

@Override
public Object getItem(int position) {
    return paths.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(context);
    if (convertView == null) {
        convertView = inflater.inflate(R.layout.list_item_image, parent, false);
    }
    String path = paths.get(position);
    ImageView image = (ImageView) convertView.findViewById(R.id.image1);
    iml.displayImage(path, image);
    return convertView;
}

}

将列表项的另一种布局作为 R.layout.list_item_image。 在这里,我正在使用图像加载器从服务器加载图像。 如果您通过本地方式获取图像...然后直接设置它们

希望对你有帮助

【讨论】:

  • 这个适配器源代码如何匹配 OP 要求?它是任何列表视图的适配器的基本代码。
  • 参考她在问题中的评论......我问了她的要求......然后回复是这样......“意味着图像在 Listview 中垂直滚动。”......我错了......如果是,请纠正我..
  • 上述适配器代码中listview的水平滚动代码在哪里?这只是基本的适配器代码。
【解决方案2】:

您可以尝试使用 TwoWayView 来管理您的需求,以实现 ListView 项目的水平滚动和垂直滚动。你也可以在 github 上查看 this 演示。

【讨论】:

    【解决方案3】:

    第一个活动的 XML

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".FirstActivity" 
    android:orientation="vertical">
    
    <ListView 
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"></ListView>
    
    </LinearLayout>
    

    用于行布局的 XML

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
     >
    
    
        <ImageView 
        android:id="@+id/myImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    
        />
    
    
    </LinearLayout>
    

    创建此布局,然后使用自定义适配器类,您可以为图像视图中的每一行填充图像......像这样

    自定义适配器类

    public class customAdapter extends BaseAdapter {
    
    ArrayList<HashMap<String, String>> al = new ArrayList<HashMap<String,String>>();
    Activity activity;
    private static LayoutInflater inflater = null;
    
    public customAdapter(Activity a, ArrayList<HashMap<String, String>> al) {
        Log.e("check", "");
        activity = a;
        this.al = al;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
         return al.size();
    }
    
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    
                imageLoader=new ImageLoader(activity.getApplicationContext());
        View vi=convertView;
        if(convertView==null)
        {
        vi = inflater.inflate(R.layout.row_layout, null);
        }
        ImageView myImage = (ImageView) vi.findViewById(R.id.myImage);
    
        imageLoader.DisplayImage(//your image from resource here),myImage);
        return vi;
    }
    
    }
    

    这里面有什么问题你可以去我在cmets里提到的教程的链接...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      相关资源
      最近更新 更多