2016-10-23 14 views
0

私はAndroidアプリケーション開発の初心者ですが、stackoverflowに関する疑似質問がありますが、この問題の正確な解決策を見つけることができません。感謝の意を表します。他のファイルをアップロードする必要があるかどうかを教えてください。ここで リストビュー項目がアンドロイドに表示されない

は私が次の出力を取得するので、私は0 Toast.makeText to display item0 of listview l1 でアイテムをトーストするときの項目がリストビューに挿入されているかなり確信しているリストビュー出力 Listview output

あるのでにデータを挿入しても問題ありませんリストビュー。リストビューの構造

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
</TextView> 

// addtocart_layout

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

<TextView 
    android:text="Total : Rs" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView10" 
    android:textSize="20sp" 
    android:textStyle="normal|bold" 
    android:layout_marginTop="16dp" 
    android:layout_below="@+id/textView9" 
    android:layout_alignStart="@+id/textView9" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="number" 
    android:ems="4" 
    android:id="@+id/editText6" 
    android:text="1" 
    android:layout_alignBaseline="@+id/textView9" 
    android:layout_alignBottom="@+id/textView9" 
    android:layout_alignStart="@+id/textView11" /> 

<TextView 
    android:text="0" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView11" 
    android:textStyle="normal|bold" 
    android:textSize="20sp" 
    android:layout_alignBaseline="@+id/textView10" 
    android:layout_alignBottom="@+id/textView10" 
    android:layout_alignParentEnd="true" 
    android:layout_marginEnd="142dp" /> 

<TextView 
    android:text="Quantity" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView9" 
    android:textSize="20sp" 
    android:textStyle="normal|bold" 
    android:layout_marginTop="36dp" 
    android:layout_below="@+id/textView7" 
    android:layout_toStartOf="@+id/textView11" 
    android:layout_marginEnd="45dp" /> 

<TextView 
    android:text="ItemName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView7" 
    android:textStyle="normal|bold" 
    android:textSize="20sp" 
    android:layout_marginTop="95dp" 
    android:layout_alignParentTop="true" 
    android:layout_toEndOf="@+id/textView10" 
    android:layout_marginStart="12dp" /> 

</RelativeLayout> 

CartDialog - - javaファイル

public class CartDialog extends DialogFragment { 
    String item; 
    TextView iname,t11; 
    EditText qty; 
    LayoutInflater inflater; 
    View view; 
    NumberPicker numberPicker; 
    public static int sprice[]={40,50,60,25,30,30,25,25,20,20,20,15,15}; 
    public String names[]=new String[]{"Item1","Item2","Item3"}; 
    public ListView l1; 
    int i=0; 
    List itemName; 
    LinearLayout rl; 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     inflater=getActivity().getLayoutInflater(); 
     itemName=new ArrayList(); 
     view=inflater.inflate(R.layout.addtocart_layout,null); 
     rl = (LinearLayout)view.inflate(this.getContext(), R.layout.fragment_cart,null); 
     //#s1 This code is for some other functionality. 
     iname=(TextView)view.findViewById(R.id.textView7); 
     iname.setText(MyMenu.item1); 
     int id=Integer.parseInt(MyMenu.childid); 
     qty=(EditText)view.findViewById(R.id.editText6); 
     t11=(TextView)view.findViewById(R.id.textView11); 
      t11.setText(Integer.toString(Integer.parseInt(qty.getText().toString())*sprice[id])); 
    qty.addTextChangedListener(
      new TextWatcher() { 
       int id=Integer.parseInt(MyMenu.childid); 
       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 

       } 

       @Override 
       public void afterTextChanged(Editable s) { 
        String qty_value=qty.getText().toString(); 
        if(!qty_value.equals("")) 
         t11.setText(Integer.toString(Integer.parseInt(qty_value)*sprice[id])); 
        else 
         t11.setText(""); 

       } 
      } 
    ); 
    #s1 ends here 

    AlertDialog.Builder builder=new AlertDialog.Builder(getActivity()); 
    builder.setView(view).setPositiveButton("Add to Cart", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      onAddToCart(); 
     } 
    }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

     } 
    }); 

    return builder.create(); 
} 
public void onAddToCart(){ 
//PLAUSIBLE PROBLEM HERE - i think, Something must be wrong here 
    ArrayAdapter<String> adapter1=new ArrayAdapter<String>(this.getContext(),R.layout.cartlist_layout,names); 
    l1=(ListView)rl.findViewById(R.id.listview_cart); 
    l1.setAdapter(adapter1); 
    Toast.makeText(this.getContext(),"Added to Cart:"+l1.getItemAtPosition(0),Toast.LENGTH_SHORT).show(); 
} 
} 
+0

リストでカスタムレイアウトを使用していますが、ビュー(R.layout.cartlist_layout)とデータ(名前)を一致させる方法を定義していません。カスタムアダプターを使用する方法を検索してみてください。 –

答えて

0

あなたの問題は、おそらく

// fragment_cart layout - where the listview is stored. 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/listview_cart" 
    /> 
</LinearLayout> 

Cartlist_layoutを表示していますインフレーションあなたがあなたの結果を見ることができない理由は何かにそれを接続していないあなたのfragment_cartのレイアウトを食べた。

あなたが示したイメージから、fragment_cartレイアウトは実際にアクティビティの一部であるようです。

あなたはMainActivityが起動する責任があると仮定すると、この

主な活動

public class MainActivity extends Activity { 
    public Fragment mCartFragment; 
    //... 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     //... 

     mCartFragment = new CartFragment(); 
     // Attach this fragment to your main activity 
    } 
} 

カート断片

public class CartFragment extends Fragment { 

    View mView; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, 
         ViewGroup container, Bundle s) { 

     // inflate fragment_cart here 
     mView = inflater.inflate(
       R.layout.fragment_cart, 
       container, 
       false 
     ); 

     return mView; 
    } 
} 

そして、あなたのaddToCart()メソッドで(のようなものを行うことができますCartDialog):

public void addToCart(){ 
    MainActivity mainActivity = (MainActivity)getActivity(); 
    View fragmentCartView = mainActivity.mCartFragment.getView(); 
    if(fragmentCartView != null){ 
     ArrayAdapter<String> adapter1=new ArrayAdapter<String>(this.getContext(),R.layout.cartlist_layout,names); 
     l1 = fragmentCartView.findViewById(R.id.listview_cart); 
     l1.setAdapter(adapter1); 
     Toast.makeText(this.getContext(),"Added to Cart:"+l1.getItemAtPosition(0),Toast.LENGTH_SHORT).show(); 
    } 
} 

ここで、CartDialogを主なアクティビティに結合しているので、このソリューションは大変気に入りませんが、コードをあまり変更したくありません。

+0

ちょうどそれをしました。 addtocart_layout –

+0

java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)'を呼び出そうとしました –

+0

あなたのlistview_cartが添付されている場所がわかっていなければなりませんあなたが結果を見ることは決してありません。 –

0

このメソッドをメソッドに追加してみます。
adapter1.notifyDataSetChanged();

関連する問題