2017-12-15 5 views
0

クラス配列に格納されているリストビューから選択した値をすべて取得しようとしています。そのクラスからフェッチしようとしたときに、関数でオブジェクトを作成しようとすると、私はそれを使うことができません。コードはこちら関数からクラスオブジェクトにアクセスできない不明なクラスがあります

public void showResult(View view) { 
     String result = "Selected Product are :"; 
     int totalAmount=0; 
     ArrayList<contactStruct> product = new ArrayList<contactStruct>(); 

     for (product p : boxAdapter.getBox()) { 
      if (p.box){ 
       result += "\n" + p.name; 
       totalAmount+=p.price; 
      } 
     } 
     Toast.makeText(this, result+"\n"+"Total Amount:="+totalAmount, Toast.LENGTH_LONG).show(); 
    } 

これはonCreate内にあります。それは未知のクラスの製品を言う。助けてください。 はい、同じパッケージにあります。ここでは、パブリックとしてクラスが不明にするために、クラス

public class contactStruct { 
    String name; 
    String mob; 
    int image; 
    boolean box; 


    contactStruct(String _describe, String _mob, int _image, boolean _box) { 
     name = _describe; 
     mob = _mob; 
     image = _image; 
     box = _box; 
    } 
} 

、ここでは私の完全なコードは

ある
import android.database.Cursor; 
import android.provider.ContactsContract; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.util.ArrayList; 

public class LoadContacts extends AppCompatActivity { 

    ArrayList<contactStruct> products = new ArrayList<contactStruct>(); 
    Cursor cursor ; 
    String name, phoneNumber; 
    int imgP; 
    ListAdapter boxAdapter; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_load_contacts); 
     fillData(); 
     boxAdapter = new com.example.piku.SteaUd.ListAdapter(this, products); 
     ListView lvMain = (ListView) findViewById(R.id.lview); 
     lvMain.setAdapter(boxAdapter); 
     Button submit = (Button)findViewById(R.id.selectCon); 
     submit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       showResult(v); 
      } 
     }); 
    } 

    void fillData() { 
     cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null, null, null); 
     while (cursor.moveToNext()) { 
      name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 

      phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      imgP =cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI)); 
      products.add(new contactStruct(""+name,phoneNumber,imgP,false)); 

     } 
     cursor.close(); 


    } 

    public void showResult(View view) { 
     String result = "Selected Product are :"; 
     int totalAmount=0; 
     ArrayList<contactStruct> prod = new ArrayList<contactStruct>(); 

     for (prod p : boxAdapter.getBox()) { 
      if (p.box){ 
       result += "\n" + p.name; 
       totalAmount+=p.price; 
      } 
     } 
     Toast.makeText(this, result+"\n"+"Total Amount:="+totalAmount, Toast.LENGTH_LONG).show(); 
    } 
} 
+0

あなたのクラスはどこに定義されていますか?既にALT + ENTERを試しましたか? – donfuxx

+0

ALT + ENTERは使用できません –

+0

プロジェクトをクリーンアップして再構築してください –

答えて

1

てみましたか?あなたのクラスを投稿することをお勧めしますcontactStruct。コンパイル時に認識されないように見えますが、動作しない場合はエラーメッセージ全体を投稿してください。

EDIT:OKを指定するだけですオブジェクトpおそらく

は次のようになります。このように動作するはずです

for (ListAdapter p : boxAdapter.getBox()) { 

、のサイクルでは、pはprodまたはproductを渡すことはできません。このように動作しません。将来のために

誤りがあると思われるこのfeature

+0

クラスとメインコードを追加しました –

+0

OK @DebasisMandal上記の編集をご覧ください。今度はこのエラーを解決する必要があります。 – trocchietto

0

を使用する方法を教え公式Javaドキュメントを参考にしてみてくださいあなたはループprodがすべきためで

(prod p : boxAdapter.getBox()) 

を持っているshowResultでありますprodがarraylistオブジェクトであると思われる間にオブジェクトp(クラス)の型になっていても、実際にはIDEからエラーが返されるはずです(実際には同じことを書いています)Unknown class prod

プラスboxAdapterが

 com.example.piku.SteaUd.ListAdapter(this, products); 

は、反復処理可能を実装する必要があり反復可能であることを確認してください。

関連する問題