Перейдите из ListView в DetailView из элемента внутри ArrayAdapter - PullRequest
0 голосов
/ 23 октября 2019

У меня есть собственный ArrayAdapter для моего ListView и я добавил onItemClickListener в ListView.

Пользовательский элемент в ArrayList для ArrayAdapter содержит больше информации, чем показано в ListView. Если пользователь нажимает на элемент, должен появиться CustomItemDetailView.

Но что для этого лучше?

Я мог бы запустить CustomItemDetailView в новом действии или просто изменить ListView с помощью CustomItemDetailView.

Это мой пользовательский ArrayAdapter

public class AuditModuleAdapter extends ArrayAdapter<AuditModule> {

    public AuditModuleAdapter(Context context, List<AuditModule> modules){
        super(context, 0, modules);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){

        AuditModule auditModule = super.getItem(position);

        if (convertView == null){
            convertView = LayoutInflater.from(super.getContext()).inflate(R.layout.audit_module_v2, parent, false);
        }

        if (auditModule == null) {
            return convertView;
        }

        TextView amName = convertView.findViewById(R.id.am_name);
        TextView amMark =  convertView.findViewById(R.id.am_mark);
        TextView amId  = convertView.findViewById(R.id.am_auditId);
        TextView amCresits =  convertView.findViewById(R.id.am_credits);
        ImageView imageView =  convertView.findViewById(R.id.am_icon);

        amName.setText(auditModule.getName());

        amCresits.setText(String.valueOf(auditModule.getCredits()));
        imageView.setImageResource(auditModule.getStatus().getIconId());
        imageView.setColorFilter(auditModule.getStatus().getColor() );
        amId.setText(String.valueOf(auditModule.getId()));

        if (auditModule.getMark() == Double.MAX_VALUE){
            amMark.setText("-.-");
        } else {
            amMark.setText(String.valueOf(auditModule.getMark()));
        }

        return convertView;
    }

}

Вот OnItemClickListener для ListView

public class AuditModuleClickListener implements AdapterView.OnItemClickListener {

    private Context context;

    public AuditModuleClickListener(Context context) {
        this.context = context;
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        // Here what to do ?? 
    }
}

Вот фрагмент кода из MainAcitiviy:

        List<AuditModule> auditModules = new ArrayList<>();
        AuditModuleAdapter auditModuleAdapter = new AuditModuleAdapter(this, auditModules);

        ListView listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(auditModuleAdapter);
        listView.setOnItemClickListener(new AuditModuleClickListener(this));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...