Адаптер ListView с несколькими макетами элементов не работает - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь отобразить ListView для некоторых документов и изображений с разным расположением.это работало для документов, но изображения все еще не показываются.Я использовал метод .contains, чтобы проверить, является ли элемент документом или изображением.Помоги мне с этим.

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    LayoutInflater layoutInflater = activity.getLayoutInflater();
    String fileName = uriList.get(position).getFileName();

    return viewSetup(position, layoutInflater, fileName);
}

private View viewSetup(final int position, LayoutInflater layoutInflater, String fileName) {
    if (fileName.contains(".png") || fileName.contains(".jpg") || fileName.contains(".jpeg")) {
        View inflate = layoutInflater.inflate(R.layout.main_list_item_img, null, false);
        ImageView imageView = inflate.findViewById(R.id.imgPrev);
        Glide.with(activity).load(uriList.get(position).getDownloadLink()).into(imageView);
        itemSetup(position, fileName, inflate);
        return inflate;

    } else {
        View inflate = layoutInflater.inflate(R.layout.main_list_item_docs, null, false);
        itemSetup(position, fileName, inflate);
        return inflate;

    }
}

private void itemSetup(final int position, String fileName, View inflate) {
    TextView title = inflate.findViewById(R.id.uriTitle);
    TextView desc = inflate.findViewById(R.id.uriDesc);
    ImageView download = inflate.findViewById(R.id.download);
    TextView createdOn = inflate.findViewById(R.id.createdOn);
    title.setText(fileName + "");
    desc.setText(uriList.get(position).getDescription());
    createdOn.setText(uriList.get(position).getSendTime());
    download.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            savefile(uriList.get(position).getDownloadLink());
        }
    });
}

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Вам нужно использовать переменную типа, вы можете проверить, как я это делал в следующем примере: -

public class JobsAdapter extends BaseAdapter {

private Activity context;
private LinkedList<KeyValuesPair> listItemArrayList;
private LinkedList<Integer> type;
private LayoutInflater inflater;

public JobsAdapter(Activity context, LinkedList<KeyValuesPair> objects, LinkedList<Integer> type) {
    this.context = context;
    this.listItemArrayList = objects;
    this.type = type;
    inflater = LayoutInflater.from(context);
}

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

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


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

@Override
public boolean isEnabled(int position) {
    return type.get(position) != 0;
}

@TargetApi(Build.VERSION_CODES.O)
public View getView(int position, View convertView, ViewGroup parent) {
    // used new view instead of convertView so the spinner could support multiple views
    View view = null;
    // if type is equals to 0 it will load jobs header else jobs child
    if (type.get(position) == 0) {
        view = inflater.inflate(R.layout.lv_header, null, false);
        TextView header = view.findViewById(R.id.jobsHeading);
        header.setText(listItemArrayList.get(position).getValue());
        if (position == 0) {
            header.setTextSize(16);
            header.setTypeface(context.getResources().getFont(R.font.raleway_regular));
            header.setTextColor(context.getResources().getColor(R.color.colorPrimaryDark));
        } else {
            header.setTextColor(context.getResources().getColor(R.color.colorBlack));
        }
    } else if (type.get(position) == 1) {
        view = inflater.inflate(R.layout.lv_child, null, false);
        TextView child = view.findViewById(R.id.jobsChild);
        child.setText(listItemArrayList.get(position).getValue());
    }
    return view;
}

}

0 голосов
/ 26 сентября 2019

Я думаю, что проблема в загрузке вашего изображения.Вы можете использовать Пикассо.

  Picasso.with(activity).load(yourUrl).
                        placeholder(R.drawable.image_loader).into(myImage);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...