2012-01-05 13 views
0

xmlにtextveiwとedittextが1つあります。このxmlを使用して別のxmlファイルのリストビューそのページで私と一緒にリストビュー編集行が1つの行から別の行に移動するときにクリアされました

simpleAdapter = new SimpleAdapter(this, alist, 
       R.layout.sort_order_list_row, new String[] { "Sort_Address", 
         "Sort_FKDeliveryStatus", "Sort_PKDelivery", 
         "Sort_DeliveryOrder" }, new int[] { 
         R.id.tv_Sort_Address, R.id.tv_Sort_FKDeliveryStatus, 
         R.id.tv_Sort_PKDelivery, R.id.et_Sort_Order }); 
     listSortOrder.setAdapter(simpleAdapter); 

問題以下に示すよう

リストビュー内のデータをリストするために使用されるXMLファイルは、私は別のXML FILS上のデータとリストビューを埋め

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="2dip" 
    android:paddingBottom="0dip"> 

    <TextView 
    android:id="@+id/tv_Sort_Address" 
    android:layout_width="0dip" 
    style="@style/ListTextViewStyle" 
    android:layout_height="wrap_content" 
    android:text="No" 
    android:layout_weight="2"/> 

    <EditText 
    android:textColor="#000000" 
    android:layout_height="wrap_content" 
    android:layout_width="0dip" 
    android:inputType="number" 
    style="@style/EditTextStyle" 
    android:background="@android:drawable/editbox_background" 
    android:id="@+id/et_Sort_Order" 
    android:layout_weight="1"> 

    </EditText> 


     </LinearLayout> 

の下に与えられているよう私がリストビューに2行を持っていて、 が編集テキスト行の1つに値を置き、別の行を編集テキストに移動すると、最初の行に配置された値が失われてしまいます。これを解決する

<ListView android:id="@+id/lv_Sort_Order" 
     style="@style/ListTextBackGround" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:layout_marginLeft="5dip"  
    android:descendantFocusability="afterDescendants"  
    android:layout_marginRight="5dip" > 
    </ListView> 

私がマージされたページへの注力を取得するには、リストビューページにandroid:descendantFocusability="afterDescendants"を置きました。しかし、それは問題を解決しませんでした。誰でも私を助けてくれますか?

リストビューまたはマージされたページに配置する必要のあるプロパティはありますか?

+0

@Arun ...あなたがリストビューのViewHolderの概念を使用する必要がリストビューにEDITTEXTで遊んでいる場合....私はアルン@デモコード – Maverick

+0

を掲載します。 ..デモコードを投稿しました –

+0

を見つけることができるところから、デモコード – Maverick

答えて

0
Use this code : 

public class ListViewDemo extends Activity { 

    private ListView listViewScore = null; 
    private ListViewAdapter listViewAdapter = null; 
    private String[] usernameArr = null; 
    private String[] scoreArr = null; 
    //ArrayList<String> usernameArrLst = null ,scoreArrLst = null; 
    //private Helper helper = null; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     listViewScore=(ListView)findViewById(R.id.listViewScore); 

     usernameArr = new String[]{"Alan","Bob","Carl","Doaniel","Evan","Fred","Gram"}; 
     scoreArr = new String[usernameArr.length]; 

     //usernameArrLst = new ArrayList<String>(Arrays.asList(usernameArr)); 
     //scoreArrLst = new ArrayList<String>(Arrays.asList(scoreArr)); 

     listViewAdapter = new ListViewAdapter(); 
     listViewScore.setAdapter(listViewAdapter); 
    } 

    class ListViewAdapter extends BaseAdapter{ 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      if(usernameArr==null){ 
       return 0; 
      } 

      return usernameArr.length; 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return usernameArr[position]; 
     } 

     @Override 
     public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return position; 
     } 

     @Override 
     public View getView(int position, View view, ViewGroup parent) { 
      // TODO Auto-generated method stub 
      final ViewHolder viewHolder ; 
      View rowView=view; 

      if(rowView==null){ 
       LayoutInflater layoutinflate =LayoutInflater.from(ListViewDemo.this); 
       rowView=layoutinflate.inflate(R.layout.listviewnewtext, parent, false); 

       viewHolder = new ViewHolder(); 

       viewHolder.tv_Sort_Address = (TextView)rowView.findViewById(R.id.tv_Sort_Address); 
       viewHolder.et_Sort_Order = (EditText)rowView.findViewById(R.id.et_Sort_Order); 

       viewHolder.et_Sort_Order.addTextChangedListener(new TextWatcher() { 

        @Override 
        public void onTextChanged(CharSequence s, int start, int before, int count) { 
         // TODO Auto-generated method stub 
        } 

        @Override 
        public void beforeTextChanged(CharSequence s, int start, int count, 
          int after) { 
         // TODO Auto-generated method stub 
        } 

        @Override 
        public void afterTextChanged(Editable s) { 
         // TODO Auto-generated method stub 
         scoreArr[viewHolder.ref] = s.toString(); 

        } 
       }); 

       rowView.setTag(viewHolder); 
      }else{ 
       viewHolder = (ViewHolder) rowView.getTag(); 
      } 

      viewHolder.ref = position; 

      viewHolder.tv_Sort_Address.setText(usernameArr[position]); 
      viewHolder.et_Sort_Order.setText(scoreArr[position]); 

      return rowView; 
     } 

    }//class ends 

    class ViewHolder{ 
     TextView tv_Sort_Address; 
     EditText et_Sort_Order; 
     int ref; 
    } 
} 
0

SimpleAdapterを使用する理由はありますか? ArrayAdapterまたはBaseAdapterを使用してみてください。 thisとすべてのBaseAdapterの例を確認してください。

+0

コメントありがとうございました。私のクラスでリストビューのアクティビティを拡張しようとしましたが、ナビゲーション問題が発生しました。私は私のクラスで活動を拡張しています。だから私はこれらの理由のために私はリストビューを埋めるためにシンプルなアダプタを使用しています。まあ、私はこのproblmを解決することはできませんので、アンドロイドではかなり新しいです –

+0

いいえ問題Arun!誰もが一度アンドロイドに新しい人だった。ちょうどあなたが改善するだろう時間。フォーラムへようこそ。 IMHOあなたがリストビューを拡張しない理由がない限り。手順は単純ですが、listview idを探し、配列アダプターを作成し、アダプターをlistviewに設定します。私が上から与えたリンクを読んでください。あなたはすべてを理解するでしょう。 – san

+0

ありがとうsanthosh.私はあなたがcommeted方法をチェックします。 –

関連する問題