Android 如何将自定义警报对话框中的项目添加到listview?
因此,我已经使用Android的适配器和适配器完成了这项工作,它工作得很好。“自定义警报”对话框有一个编辑文本,当用户单击“确定”时,该名称将添加到listview中 但现在,我使用的是一个模型和一个自定义适配器。如何做到这一点 这是我的密码: MainActivity.javaAndroid 如何将自定义警报对话框中的项目添加到listview?,android,android-alertdialog,Android,Android Alertdialog,因此,我已经使用Android的适配器和适配器完成了这项工作,它工作得很好。“自定义警报”对话框有一个编辑文本,当用户单击“确定”时,该名称将添加到listview中 但现在,我使用的是一个模型和一个自定义适配器。如何做到这一点 这是我的密码: MainActivity.java public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { EditTex
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
EditText textsearch;
ListView lv;
AlertDialog.Builder builder;
ArrayList<Names> namesArrayList = new ArrayList<>(); //arraylist for names
ArrayList<Names> findnames = new ArrayList<>(); //array list for search filter
Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textsearch = (EditText) findViewById(R.id.textsearch);
lv = (ListView) findViewById(R.id.listview);
adapter = new Adapter(this, namesArrayList);
lv.setAdapter(adapter);
//
builder = new AlertDialog.Builder(this);
lv.setOnItemClickListener(this);
this.textsearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//using regular expression
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// findnames.clear();
//
// //using regular expression
// String s1 = s.toString();
// Pattern pattern = Pattern.compile(s1);
//
// for (int i=0; i<list.size(); i++){
// Matcher matcher = pattern.matcher(list.get(i));
// if(matcher.find()){
// findnames.add(list.get(i));
// }//end if
// }
// //update the adapter
// findadapter.notifyDataSetChanged();
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.addmenu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id){
case R.id.action_add:
showDialog(); //calling the showDialog() method
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void showDialog(){
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.custom_dialog, null);
dialogBuilder.setView(dialogView);
final EditText textName = (EditText) dialogView.findViewById(R.id.editName);
dialogBuilder.setTitle("New Item");
dialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(!textName.getText().toString().equals("")){
// code here to add item
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Item added!", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "Fields can not be empty!", Toast.LENGTH_SHORT).show();
}
}
});
dialogBuilder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog build = dialogBuilder.create();
build.show();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
this.namesArrayList.remove(position);
this.adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Name deleted!", Toast.LENGTH_LONG).show();
}
}
Adapter.java
public class Adapter extends BaseAdapter {
Context context;
//data container
ArrayList<Names> list;
LayoutInflater inflater;
//constructor
public Adapter(Context context, ArrayList<Names> list) {
this.context = context;
this.list = list;
this.inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.custom_layout, parent, false);
holder.name = (TextView) convertView.findViewById(R.id.txtname);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
//inflate
holder.name.setText(list.get(position).getName());
return convertView;
}
static class ViewHolder{
TextView name;
}
}
公共类适配器扩展了BaseAdapter{
语境;
//数据容器
数组列表;
充气机;
//建造师
公共适配器(上下文、ArrayList列表){
this.context=上下文;
this.list=列表;
this.inflater=layoutiner.from(上下文);
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
holder=新的ViewHolder();
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.custom_布局,父级,false);
holder.name=(TextView)convertView.findViewById(R.id.txtname);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
//膨胀
holder.name.setText(list.get(position.getName());
返回视图;
}
静态类视窗夹{
文本视图名称;
}
}
尝试以下方法:
if(!textName.getText().toString().equals("")) {
Names name = new Names(textName.getText().toString());
adapter.list.add(name);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Item added!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Fields can not be empty!", Toast.LENGTH_SHORT).show();
}
基本上,我所做的就是创建一个新的
Names
模型实例,并将其添加到适配器中的项目列表中检查我的答案,希望它能有所帮助:如果您没有任何其他问题,请考虑将我的解决方案标记为答案,快乐编码:)
if(!textName.getText().toString().equals("")) {
Names name = new Names(textName.getText().toString());
adapter.list.add(name);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Item added!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "Fields can not be empty!", Toast.LENGTH_SHORT).show();
}