2016-12-27 86 views
0

我希望用戶從alertDialog中的編輯文本輸入文本,並讓列表視圖中的文本視圖更新爲該輸入。它似乎只工作,如果我沒有輸入任何東西到編輯文本,它將textView更改爲空白,但如果有輸入什麼也沒有發生,奇怪。無法將自定義列表視圖中的TextView更改爲alertDialog中editText的用戶輸入

這是適配器類,我的工作在 -

import android.content.Context; 
import android.content.DialogInterface; 
import android.support.annotation.NonNull; 
import android.support.v7.app.AlertDialog; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.ArrayList; 

import static com.example.emilythacker.chorelist.R.id.textView_ID; 



class CustomAdapter extends ArrayAdapter{ 

    public CustomAdapter(Context context, ArrayList choreText) { 
     super(context, R.layout.custon_listview_row, choreText); 
    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater myInflater = LayoutInflater.from(getContext()); 
     View customView = myInflater.inflate(R.layout.custon_listview_row, parent, false); 


     ImageButton imageButton = (ImageButton) customView.findViewById(R.id.imageButton_ID); 
     final TextView textView = (TextView) customView.findViewById(textView_ID); 

     textView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //what happens when textView is clicked 
       AlertDialog alertDialog = new AlertDialog.Builder(getContext()).create(); 
       final EditText input = new EditText(getContext()); 
       input.setHint("hint"); 
       alertDialog.setView(input); 
       alertDialog.setTitle("Set Chore"); 
       alertDialog.setMessage("Alert message to be shown"); 
       alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 

           //this will set text to "hello" only if user does not enter anything into input 
           textView.setText("hello"); 

           //this also will only work if there is no input entered into input...wich will change textView into empty space 
           //textView.setText(input.getText().toString()); 

           //works the same with or without dialog.dismiss(); 
           dialog.dismiss(); 
          } 
         }); 
       alertDialog.show(); 

      } 
     }); 



     imageButton.setImageResource(R.drawable.clock); 

     return customView; 
    } 
} 

這裏是我的列表視圖中的每一行的XML如果helps-

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="60dp"> 

    <ImageButton 
     android:layout_width="60dp" 
     android:scaleType="fitCenter" 
     app:srcCompat="@drawable/clock" 
     android:id="@+id/imageButton_ID" 
     android:layout_height="60dp" 
     android:background="@null" 
     android:layout_alignParentRight="true" 
     android:padding="5dp" 
     android:layout_weight="1" /> 


    <TextView 
     android:text="Click here to add chore" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:id="@+id/textView_ID" 
     android:textSize="25dp" 
     android:layout_centerVertical="true" 
     android:layout_toStartOf="@+id/imageButton_ID" 
     android:layout_marginEnd="11dp" 
     /> 


</RelativeLayout> 

回答

1

鍵盤彈出導致您的listview被刷新。在你的清單,你必須添加一行代碼在被牽着你的適配器的活動:

<activity android:name=".Your_Activity" android:windowSoftInputMode="adjustNothing"> //add this line

希望您的問題消失了:)

+0

它的工作原理!長期以來一直困擾着這個。謝謝 –

0

我沒有看到你檢索來自editText的值並將其分配給textView。 更新您的公開getView()函數是這樣的:

@NonNull 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater myInflater = LayoutInflater.from(getContext()); 
    View customView = myInflater.inflate(R.layout.custon_listview_row, parent, false); 


    ImageButton imageButton = (ImageButton) customView.findViewById(R.id.imageButton_ID); 
    final TextView textView = (TextView) customView.findViewById(textView_ID); 

    String text; 

    textView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //what happens when textView is clicked 
      AlertDialog alertDialog = new AlertDialog.Builder(getContext()).create(); 
      final EditText input = new EditText(getContext()); 
      input.setHint("hint"); 
      alertDialog.setView(input); 
      alertDialog.setTitle("Set Chore"); 
      alertDialog.setMessage("Alert message to be shown"); 
      alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 

          text = input.getText().toString(); 

          //this will set text to "hello" only if user does not enter anything into input 
          textView.setText(text); 

          //this also will only work if there is no input entered into input...wich will change textView into empty space 
          //textView.setText(input.getText().toString()); 

          //works the same with or without  dialog.dismiss(); 
          dialog.dismiss(); 
         } 
        }); 
      alertDialog.show(); 

     } 
    }); 



    imageButton.setImageResource(R.drawable.clock); 

    return customView; 
} 

告訴我,如果它幫助。

+0

它沒有工作。是否有與textView.setText(input.getText()。toString())之間的任何差異; ? –

相關問題