2016-11-26 37 views
1

我有一个自定义的listview,我试图做的是当用户在lisview中选择一个特定的值时,它会在同一活动中的对话框中的editText ..但它不会得到值..这里是我的代码android listview to editTxt在对话框内

public void savedNotes(){ 

      list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View arg1, final int position, 
          long arg3) { 


          LayoutInflater li = LayoutInflater.from(context); 
          View promt = li.inflate(R.layout.prompt_saved_notes,null); 
          AlertDialog.Builder alerDialogBuilder = new AlertDialog.Builder(context); 
          alerDialogBuilder.setView(promt); 


          final EditText textfield1 = (EditText) promt.findViewById(R.id.edt_textfield); 

          alerDialogBuilder.setCancelable(false).setPositiveButton("saved",new DialogInterface.OnClickListener(){ 
           public void onClick(DialogInterface dialog,int id){ 
             String itemString = list.getItemAtPosition(position).toString(); 
             textfield1.setText(itemString); 


           } 
          }).setNegativeButton("cancel",new DialogInterface.OnClickListener(){ 
           public void onClick(DialogInterface dialog,int id){ 
             dialog.cancel(); 
             } 
          }); 
          AlertDialog alertDialog = alerDialogBuilder.create(); 
          alertDialog.show(); 

       } 
      }); 
} 

回答

0

你不能

String itemString = list.getItemAtPosition(position).toString(); 

而是获得从自定义列表视图的价值,你可能已经使用数组或一个ArrayList来存储您所设置里面的数据列表视图。在onItemCLick()内键入

//For arraylist 
String itemString = your_arrayList.get(position); 
//For array 
String itemString = your_array[position]; 

通过你的代码,这个“itemString”将出现在EditText上,只有当您在对话框中单击/轻按“保存”按钮。

1

试试这个..

list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View arg1, final int position, 
        long arg3) { 


        LayoutInflater li = LayoutInflater.from(context); 
        View promt = li.inflate(R.layout.prompt_saved_notes,null); 
        AlertDialog.Builder alerDialogBuilder = new AlertDialog.Builder(context); 
        alerDialogBuilder.setView(promt); 


        final EditText textfield1 = (EditText) promt.findViewById(R.id.edt_textfield); 
        String itemString = list.getItemAtPosition(position).toString(); 
        textfield1.setText(itemString); 
        alerDialogBuilder.setCancelable(false).setPositiveButton("saved",new DialogInterface.OnClickListener(){ 
         public void onClick(DialogInterface dialog,int id){ 


         } 
        }).setNegativeButton("cancel",new DialogInterface.OnClickListener(){ 
         public void onClick(DialogInterface dialog,int id){ 
           dialog.cancel(); 
           } 
        }); 
        AlertDialog alertDialog = alerDialogBuilder.create(); 
        alertDialog.show(); 

     } 
    }); 

希望这会帮助你。

+0

解决了! :) tnx男..终于!我一直在搞清楚几乎一天...大的帮助:) –

+0

不客气的兄弟...如果我的回答是真正有用的,你可以upvote我的答案...谢谢 –

+0

@ Mr.abing_da_student,如果答案是有帮助的,点击*勾号*除了答案[**检查此**](https://i.stack.imgur.com/LkiIZ.png);以帮助未来的其他用户。 – Vikrant

0

在单击对话框的正面(“保存”)按钮后,您正在EditText上设置值,但是当对话框已经可见时,EditText没有任何值。

首先,你需要从这里删除代码: -

alerDialogBuilder.setCancelable(false).setPositiveButton("saved",new DialogInterface.OnClickListener(){ 
           public void onClick(DialogInterface dialog,int id){ 
//Remove these two line code from here          
String itemString = list.getItemAtPosition(position).toString(); 

textfield1.setText(itemString); 
           } 
          } 

现在只是在警告对话框中找到喜欢的EditText的引用后添加这两个路线: -

list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View arg1, final int position, 
         long arg3) { 


         LayoutInflater li = LayoutInflater.from(context); 
         View promt = li.inflate(R.layout.prompt_saved_notes,null); 
         AlertDialog.Builder alerDialogBuilder = new AlertDialog.Builder(context); 
         alerDialogBuilder.setView(promt); 


         final EditText textfield1 = (EditText) promt.findViewById(R.id.edt_textfield); 
         String itemString = list.getItemAtPosition(position).toString(); 
            textfield1.setText(itemString); 

         alerDialogBuilder.setCancelable(false).setPositiveButton("saved",new DialogInterface.OnClickListener(){ 
          public void onClick(DialogInterface dialog,int id){ 
          } 
         }).setNegativeButton("cancel",new DialogInterface.OnClickListener(){ 
          public void onClick(DialogInterface dialog,int id){ 
            dialog.cancel(); 
            } 
         }); 
         AlertDialog alertDialog = alerDialogBuilder.create(); 
         alertDialog.show(); 

      } 
     }); 
} 
+0

tnx。为da帮先生... –

+0

最受欢迎,也没有先生请我像你一样学习。 – Avi