簡體   English   中英

帶按鈕的警報對話框中的自定義ListView

[英]Custom ListView in an Alert Dialog with buttons

我有一個自定義的listview,每行包含兩個按鈕,我在努力的是這些按鈕的偵聽器。 我的Listview包含在AlertDialog中,這是我擁有的代碼

@Override
    public void displayUnders(List<UndersLM> ulm) {

        AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
        ArrayList<UndersLM> undersreturn = new ArrayList<UndersLM>();
        final ListView L = new ListView(ctx);

        final UndersLM y = new UndersLM();

        for (UndersLM aulm : ulm) {
            final UndersLM s = new UndersLM();
            s.set_id(aulm.get_id());
            s.set_cartonid(aulm.get_cartonid());
            s.set_sku(aulm.get_sku());
            s.set_sentqty(aulm.get_sentqty());
            s.set_scannedqty(aulm.get_scannedqty());
            undersreturn.add(s);

        }


        uadaptor = new Unders(ctx, undersreturn);
        L.setAdapter(uadaptor);

        builder.setView(L);
        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        builder.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Object rid = parent.getAdapter().getItem(position);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        L.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Object rid = parent.getAdapter().getItem(position);

            }
        });

        AlertDialog d;
        d = builder.create();
        d.show();


    }

如您所見,我已經在ListView自身上嘗試了ItemClickListerner,並在AlertDialog上嘗試了itemSelected。

我想念什么? 這些都沒有命中對象rid = parent ....行

編輯-實際上不知道該內容-它的片段!

好的,解決了。

基本上,您必須在您的Custom Adaptor中執行此操作(據我所知),因此在我的情況下,此方法有效:

public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        final ViewHolder holder;

        if (convertView == null) {
            vi = inflater.inflate(R.layout.unders, null);

            holder = new ViewHolder();
            holder.id = (TextView) vi.findViewById(R.id.id);
            holder.cartonID = (TextView) vi.findViewById(R.id.cartonID);
            holder.Sku = (TextView) vi.findViewById(R.id.Sku);
            holder.Sent = (TextView) vi.findViewById(R.id.Sent);
            holder.add = (Button) vi.findViewById(R.id.add);
            holder.Scanned = (TextView) vi.findViewById(R.id.Scanned);
            holder.subtract = (Button) vi.findViewById(R.id.subtract);
            vi.setTag(holder);
        } else {
            holder = (ViewHolder) vi.getTag();
        }

        if (Lines.size() < -0) {
            holder.id.setText("No Unprocessed Deliveries");
        } else {
            tempValues = null;
            tempValues = (UndersLM) Lines.get(position);


            holder.id.setText(String.valueOf(tempValues.get_id()));
            holder.cartonID.setText(String.valueOf(tempValues.get_cartonid())+ " | ");
            holder.Sku.setText(String.valueOf(tempValues.get_sku()) + " | ");
            holder.Sent.setText(String.valueOf(tempValues.get_sentqty()) + " | ");
            holder.Scanned.setText(String.valueOf(tempValues.get_scannedqty()));

            holder.add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    new underCorrections(ctx,true,tempValues.get_cartonid(),tempValues.get_sku()).execute();
                    holder.Scanned.setText(String.valueOf(tempValues.get_scannedqty()+1));
                }
            });



        }
        return vi;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM