android - 如何获取 ListView 中 EditText 的文本?

标签 android listview android-edittext

我正在尝试通过按按钮 获取EditText 的文本。两者都在 ListView

这是我的问题适配器

 public View getView(final int position, View contentView, ViewGroup parent) {

            if (contentView==null){
                contentView= LayoutInflater.from(c).inflate(R.layout.actu_list_item,parent,false);
            }
            TextView asker = (TextView) contentView.findViewById(R.id.asker_name);
            TextView date = (TextView) contentView.findViewById(R.id.date);
            TextView title = (TextView) contentView.findViewById(R.id.question_title);
            TextView content = (TextView) contentView.findViewById(R.id.question_content);
            Button answer = (Button) contentView.findViewById(R.id.answer);
             EditText answerET= (EditText)  contentView.findViewById(R.id.answer_edittext);
             answer_text = answerET.getText().toString();
            posit = this.getItem(position);
            answer.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {

                        Toast.makeText(c,"Post en cours...",Toast.LENGTH_LONG).show();
                        Answer answerClass = (Answer) posit;
                        FirebaseDatabase database = FirebaseDatabase.getInstance();
                        FirebaseAuth firebaseAuth1 = FirebaseAuth.getInstance();
                        FirebaseUser firebaseUser= firebaseAuth1.getCurrentUser();
                        qe= (Questions) posit;
                        SimpleDateFormat dateFormat=new SimpleDateFormat("HH:mm dd-MM-yyyy", Locale.FRANCE);
                        String date= dateFormat.format(new Date(System.currentTimeMillis()));
                        assert  firebaseUser !=null;
                        DatabaseReference Asker = database.getReference(firebaseUser.getUid()+"/name");
                        Asker.addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                name = dataSnapshot.getValue(String.class);

                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {

                            }
                        });
                        answerClass.setAnswer(answer_text);
                        answerClass.setUsername(name);
                        answerClass.setDate(date);
                        DatabaseReference AnswerRef =database.getReference("Questions/"+qe.getTag_id());
                        AnswerRef.push().setValue(answerClass).addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                Toast.makeText(c,"Reponse postée",Toast.LENGTH_LONG).show();
                            }
                        });
                }
            });

            qe= (Questions) this.getItem(position);
            asker.setText(qe.getQuestion_username());
            date.setText(qe.getQuestion_date());
            title.setText(String.format("Q: %s", qe.getQuestion_title()));
            content.setText(qe.getQuestion_content());

            contentView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(c,qe.getQuestion_username(),Toast.LENGTH_LONG).show();
                }
            });

            return contentView;
        }

这是我在其中显示 listView 的 Activity。

当在 EditText 中键入文本然后单击相关按钮时,没有显示任何内容。

public class Actu extends Fragment {
    private DatabaseReference db;
    FirebaseHelper helper;
    QuestionAdapter adapter;
    ListView lv;
    View v;

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
                container, @Nullable Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.activity_actu, container, false);
        lv = (ListView) v.findViewById(R.id.actu_rv);
        progressBar = (ProgressBar) v.findViewById(R.id.progress_bar);
        no_connection =(TextView) v.findViewById(R.id.no_connection);
        db = FirebaseDatabase.getInstance().getReference("Questions");
        db.limitToLast(100).orderByKey();
        helper = new FirebaseHelper(db);
        adapter = new QuestionAdapter(getContext(),helper.retreive());
        lv.setAdapter(adapter);


        return v;        }

}

我尝试了很多方法,但没有任何效果。有人可以帮助我吗?

最佳答案

简而言之——你必须把

answer_text = answerET.getText().toString();

在 onClickListener 中

answer.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                 answer_text = answerET.getText().toString();

                 ...
            }
}

附言。你的代码很难读

关于android - 如何获取 ListView 中 EditText 的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47017330/

相关文章:

java - 剪切 JsonStr

Android:在叠加的 TextField 背景中流动的 ListView

php - Android中jSONArray解析异常的问题

android - 如何使用 ListView 制作全屏垂直 ScrollView

android - ListView 的动态行布局

按任意键时android编辑文本隐藏在键盘下方

java - Android 以编程方式加载字符串资源

android - 实现 viewpager 后无法滑动到我的详细信息 Activity 中的下一个项目

android - 如何更改 edittext 文本选择 handle 的颜色?

android - 特殊的编辑文本。必须显示以用户输入的字符开头的单词出现列表