30/09/2018, 23:08

[Android] Có thể truyền dữ liệu lên alerDialog?

mình có một danh sách listview muốn khi giữ vào nó thì dữ liệu sẽ được truyền lên một alerDialog để sửa nhưng không thành công. Các bạn có code demo không hỗ trợ dùm mình với

X viết 01:17 ngày 01/10/2018

Bạn đã làm như thế nào rồi? post code lên xem thử

Dương Trần Đình viết 01:17 ngày 01/10/2018

Theo mình thì bạn nên xây dựng fragment, kô biết là có đúng với ý định của bạn kô

Qu Thành viết 01:15 ngày 01/10/2018

Phần code của mình đây nút thêm thì mình dùng dialog được rồi còn sửa thì không biết làm sao mà lúc hiện ra Dialog thì dữ liệu được nạp lên luôn, hiện tại chức năng sửa thì mình truyền vào edittex để sửa bình thường

package fpoly.quangthanh.ps04801_assignment;

import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by voquangthanh on 8/12/16.
 */
public class ManagentClass extends Activity {
    TextView tv_id;
    Button btn_Sua;
    Button btn_Them;
    EditText et_dataClass;
    ListView lv_Lop;
    MyDatabase db;
    ArrayList<MyClass> ml;
    MyAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activityma_class);
        tv_id = (TextView) this.findViewById(R.id.textView4);
        btn_Sua = (Button) this.findViewById(R.id.buttonSuaLop);
        btn_Them = (Button) this.findViewById(R.id.buttonThemLop);
        lv_Lop = (ListView) this.findViewById(R.id.listViewLop);
        et_dataClass = (EditText) this.findViewById(R.id.editTextDataClass);
        db = new MyDatabase(this);
        ml = new ArrayList<>();
        UpdateThongtin();
        this.registerForContextMenu(lv_Lop);
        btn_Them.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final AlertDialog.Builder aler = new AlertDialog.Builder(ManagentClass.this);
                LayoutInflater inf = getLayoutInflater();
                aler.setView(inf.inflate(R.layout.alert_class_add, null));
                aler.setPositiveButton("Add", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Dialog d = (Dialog) dialogInterface;
                        EditText et_dulieulop = (EditText) d.findViewById(R.id.editTextDuLieuLop);
                        String tenlop = et_dulieulop.getText().toString();
                        MyClass ml = new MyClass(tenlop);
                        db.themLop(ml);
                        UpdateThongtin();
                    }
                });
                aler.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.cancel();
                    }
                });
                aler.show();
            }
        });
        btn_Sua.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int id = Integer.parseInt(tv_id.getText().toString());
                String ten = et_dataClass.getText().toString();
                MyClass ml = new MyClass(id, ten);
                db.suaLop(ml);
                UpdateThongtin();
            }
        });
    }

    public void UpdateThongtin() {
        ml = db.layLop();
        adapter = new MyAdapter(ManagentClass.this, ml);
        lv_Lop.setAdapter(adapter);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        MenuInflater inf = this.getMenuInflater();
        inf.inflate(R.menu.menu, menu);
        super.onCreateContextMenu(menu, v, menuInfo);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
        int indexListView = info.position;
        if (item.getItemId() == R.id.Edit) {
            int id = ml.get(indexListView)._id;
            String ten = ml.get(indexListView).tenlop;
            et_dataClass.setText(ten);
            tv_id.setText(id + "");

        } else {
            int id = ml.get(indexListView)._id;
            db.xoaLop(id);
            UpdateThongtin();
        }
        return super.onContextItemSelected(item);
    }
}
Nguyen Ca viết 01:14 ngày 01/10/2018

anh dùng kểu này:
cơ bản là inflate và thôi, tạo template list data trước, ở đây anh dùng cái có sẳn(single choice)

 switch (item.getKey().toString()){
                        case ITEM_LANGUAGE:
                            AlertDialog.Builder builder = new AlertDialog.Builder(parent.getContext());

                            LayoutInflater inflater = getLayoutInflater();
                            View titleView=inflater.inflate(R.layout.dialog_title_bar, null);
                            TextView titleHeader = (TextView)titleView.findViewById(R.id.titleHeaderDialog) ;
                            titleHeader.setText(R.string.pick_you_language);
                            builder.setCustomTitle(titleView);

                            View convertView = inflater.inflate(R.layout.single_choice, null);
                            builder.setView(convertView);
                            ListView lv = (ListView) convertView.findViewById(R.id.listViewSingleChoice);
                            final ArrayAdapter<String> adapterLg = new ArrayAdapter<>(SettingsActivity.this, android.R.layout.simple_list_item_single_choice,languages);
                            lv.setAdapter(adapterLg);
                            String name = LocaleHelper.getCountryName();
                            int currentIdx = 0;
                            for(int i = 0;i <languages.length;i++) {
                                if(name.equals(languages[i])) {
                                    currentIdx = i;
                                    break;
                                }
                            }

                            lv.setItemChecked(currentIdx,true);
                            final Dialog dialog = builder.create();
                            dialog.show();

                            lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){


                                @Override
                                public void onItemClick(AdapterView<?> parent1, View view, int position, long id) {
                                    String item1 = adapterLg.getItem(position);
                                    switch (item1){
                                        case "English":
                                        case "英文":
                                            LocaleHelper.setLocale(parent.getContext(), "en");
                                            dialog.dismiss();
                                            (new UpdateLanguageTask(getBaseContext())).execute((Void)null);
                                            break;
                                        case "Chinese":
                                        case "中文":
                                            LocaleHelper.setLocale(parent.getContext(), "zh");
                                            dialog.dismiss();
                                            break;
                                    }
                                    updateViews();

                                }
                            });

                            break;
                        case ITEM_PASSWORD:
                            alertCustomizedLayout();
                            break;
                    }
                }
Qu Thành viết 01:21 ngày 01/10/2018

để mình thử cảm mơn bạn nhé

Bài liên quan
0