我想把这个设计放在mi xml中。首先是一个标题和一个图片一次,然后很多行显示有关照片的信息。我的问题是,当我选择第一行时将所有内容放入RelativeLayout时,我选择了照片,标题和第一行。因此我必须在主要元素(Photo和header)和其他xml中放入两个xml所有行。我如何在Listview中充气两个xml?我不知道如何做到这一点。
我无法发布图片,因此结构将是:
(listview中的一项) 1)HEADER和PHOTO不重复 2)ROWS - 多行
将标题放入listview的一行。因为我想在每张照片中添加评论,每张照片可能不止一张。
我拥有相同的xml,但是使用这种格式时我点击了一行时遇到了问题。
照片和用户详细信息只能显示一次,行取决于每张照片,有多行照片。因此,我认为最好的选择是做两个xml文件并从java代码中膨胀它,但我不知道这样做。如果有人有另一个最好的选择将被接受。
我的getView代码如下:
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
Object repeat = MyArrList.get(position).get("Repeat");
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.activity_column, null);
holder = new ViewHolder();
holder.imageView = (ImageView) convertView.findViewById(R.id.ColImgPath);
//Userdetails
holder.tvU = (TextView) convertView.findViewById(R.id.tvU);
holder.tvUN = (TextView) convertView.findViewById(R.id.tvUN);
holder.ivProfilePhoto = (ImageView) convertView.findViewById(R.id.profilephoto);
//Accessory details
holder.tvN = (TextView) convertView.findViewById(R.id.tvN);
holder.tvB = (TextView) convertView.findViewById(R.id.tvB);
holder.tvP = (TextView) convertView.findViewById(R.id.tvP);
holder.tvS = (TextView) convertView.findViewById(R.id.tvS);
convertView.setTag(holder);
}
else{
holder = (ViewHolder) convertView.getTag();
}
holder.imageView.setPadding(5, 5, 5, 5);
holder.imageView.setRotation(90);
if(repeat.equals("1")){
holder.imageView.setVisibility(View.VISIBLE);
holder.tvU.setVisibility(View.VISIBLE);
holder.tvUN.setVisibility(View.VISIBLE);
holder.tvU.setText(MyArrList.get(position).get("U").toString());
holder.tvUN.setText(MyArrList.get(position).get("UN").toString());
}
else {
//If the photo_id is repeated these params are not shown
holder.tvU.setVisibility(View.GONE);
holder.tvUN.setVisibility(View.GONE);
holder.imageView.setVisibility(View.GONE);
}
try {
Bitmap bmp = ((Bitmap) MyArrList.get(position).get("ImageThumBitmap"));
Bitmap photobitmap1 = Bitmap.createScaledBitmap(bmp, width/2, height/2, true);
holder.imageView.setImageBitmap((Bitmap) MyArrList.get(position).get("Photo"));
} catch (Exception e) {
// When Error
holder.imageView.setImageResource(android.R.drawable.ic_menu_report_image);
}
holder.tvN.setPadding(20, 0, 0, 0);
holder.tvN.setText(MyArrList.get(position).get("N").toString());
holder.tvB.setPadding(20, 0, 0, 0);
holder.tvBsetText(MyArrList.get(position).get("B").toString());
holder.tvP.setPadding(20, 0, 0, 0);
holder.tvP.setText(MyArrList.get(position).get("P").toString());
holder.tvS.setPadding(20, 0, 0, 0);
holder.tvS.setText(MyArrList.get(position).get("S").toString());
return convertView;
}
答案 0 :(得分:-1)
更好的是你可以将Header放在一个单独的Xml中并将其添加到ListView Header中,如下所示
init listView
inflate header and add it to the list
set any adapter to listView (!!!)
set listView adapter