2

JSONObjectで正しく機能するExpandableListViewがあります。グループをクリックすると、子供たちが表示されます。子はコメントを表し、私の場合、最後の子はEditTextです。このEditTextによって、新しいコメントを挿入できます。問題はこれです:

アダプターでmyEditText.requestFocus()を使用すると、キーボードが機能します。つまり、キーボードを入力すると、editTextは文字で更新されますが、キーボードを表示するには、EditTextを複数回押す必要があります。アダプターでmyEditText.requestFocus()を使用しない場合、EditTextをクリックすると、キーボードがすぐに表示されます(通常、EditTextをクリックするとキーボードが表示されます)が、入力してもeditTextは更新されません。 、つまり、ウィジェットに文字が表示されません。文字を表示するには、キーボードを開いているときにEditTextをもう一度クリックする必要があります。

これは私がコメントに使用するレイアウトです:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/layoutchildren"
   android:layout_height="wrap_content" 
   android:layout_width="fill_parent" 
   android:orientation="vertical" 
   android:paddingLeft="10dip"
   android:paddingLeft="10dip"
   android:background="@color/lgray">
    <RelativeLayout  android:paddingLeft="10dip" android:paddingRight="10dip" android:background="@color/white" android:layout_height="45dip" android:layout_width="fill_parent" android:layout_marginBottom="2dip" >


    <ImageView android:id="@+id/feedcommentcell_profileimg" android:layout_width="32dip" android:layout_height="32dip" android:layout_centerVertical="true" android:scaleType="fitXY"/>
    <TextView android:id="@+id/feedcommentcell_username" android:textStyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:textColor="@color/black" android:layout_toRightOf="@+id/feedcommentcell_profileimg" android:layout_marginLeft="10dip" android:layout_alignTop="@+id/feedcommentcell_profileimg"/>
    <TextView android:id="@+id/feedcommentcell_comment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="11sp" android:textColor="@color/black" android:layout_toRightOf="@+id/feedcommentcell_profileimg" android:layout_marginLeft="10dip" android:layout_below="@+id/feedcommentcell_username"/>
    <TextView android:id="@+id/feedcommentcell_scanhour" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="10sp" android:textColor="@color/dgray" android:layout_alignParentRight="true" android:layout_alignBottom="@+id/feedcommentcell_username"/>
    </RelativeLayout>

</LinearLayout>

これは私のEditTextのレイアウトです

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_height="wrap_content"
   android:layout_width="fill_parent" 
   android:orientation="vertical" 
   android:paddingLeft="10dip"
   android:paddingRight="10dip"
   android:background="@color/lgray">
<RelativeLayout android:id="@+id/feedcell_addcomment" android:paddingLeft="10dip" android:paddingRight="10dip" android:paddingTop="5dip" android:paddingBottom="5dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="0.5dip" android:background="@color/mlgray">
         <EditText android:id="@+id/feedcell_edittxt" android:textColor="@color/black" android:layout_width="fill_parent" android:hint="Write a comment.." android:layout_height="35dip"   android:textSize="14sp" android:gravity="center_vertical" android:paddingLeft="10dip" android:background="@drawable/bgfriendsedtxt" android:singleLine="true" android:clickable="true"/>
         <Button android:id="@+id/feedcell_commentbtn" android:textColor="@color/black" android:textSize="14sp" android:layout_height="32dip" android:layout_width="60dip" android:text="Done"  android:layout_alignParentRight="true" android:layout_marginTop="4dip" android:layout_marginRight="5dip" android:gravity="center"/>
    </RelativeLayout>
</LinearLayout>

これは私のアダプターのgetChildViewです:

@Override
        public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
    {


        View v = convertView;
    int type=getChildType(groupPosition,childPosition);
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (v == null)
        {
            switch(type)
        {

            case TYPE_EDIT:

                v = vi.inflate(R.layout.edittextcommentlist,null);
                break;


            case TYPE_CHILD:

                    v = vi.inflate(R.layout.feedcommentcell,null);
                    break;

        }

        }  
        try
        { 
            if(type == TYPE_CHILD)
            {
                final JSONObject o = getChild(groupPosition,childPosition);

                if(o!=null)
                {
                         //I fill out my Children XML file 
                         }

            }
            else if(type==TYPE_EDIT)
            {
                JSONObject o = getChild(groupPosition,childPosition);
                if(o!=null)
                {

                    final int groupPos=groupPosition;

        addComment =   (EditText)v.findViewById(R.id.feedcell_edittxt);        


                   addComment.requestFocus();


            addComment.setOnClickListener(new OnClickListener(){

        @Override
    public void onClick(View v) {

        addComment.setText("");
                }
                });

            //addComment.requestFocus();


            commentBtn=(Button)v.findViewById(R.id.feedcell_commentbtn);
                commentBtn.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View v) {

                    //I write my code for button..ok
                            }

                        });

                }

            }

        }
        catch(Exception e)
        {}
        return v;
    }

このトピックについて多くの答えを見つけましたが、androidマニフェストでキーボードの状態を変更しようとしました。onFocusChangeを実装しようとしました。xmlファイルに追加しようとしました。またはjavaコード属性android:focusableおよびandroid:focusableInTouchModeを使用しました。 。。addComment.requestFocus()を使用しない場合、EditTextをクリックするとキーボードはすぐに開きますが、1秒後に[完了]ボタンが回って戻ります。問題を解決しないでください。誰かが私を助けることができますか?ありがとう

4

0 に答える 0