2016-04-07 8 views
0

これは私のコードです。私はトピック名、トピックコード、トピック結果をarraylistに入れました。問題は、例えば私はA(位置0)、B(位置1)、C(位置2)を持っていることです。私はBを検索し、それをクリックすると、アプリはA.検索のリストビューとonclickはフィルタの後にクリックすると正しい位置を取得しません

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

    ctopics = (ListView) findViewById(R.id.clistView); 
    csearch = (EditText) findViewById(R.id.CSearch); 

    ctitle = new ArrayList<Ctitle>(); 



    ctopics.setAdapter(cAdapter); 
    ctitle.add(new Ctitle("Swap Two Numbers", 
      "#include <iostream>\nusing namespace std;\nint main(){\nint a = 5, b = 10, temp;\ncout << ''Before swapping.'' << endl;\ncout << ''a = '' << a << '', b = '' << b << endl;\n\ntemp = a;\na = b;\nb = temp;\n\ncout << ''\nAfter swapping.'' << endl;\ncout << ''a = '' << a << '', b = '' << b << endl;\n\nreturn 0;\n}", 
      "Before swapping.\na = 5, b = 10\n\nAfter swapping.\na = 10, b = 5")); 
    ctitle.add(new Ctitle("While Loop", 
      "#include <iostream>\nusing namespace std;\nint main(){\nint a = 10;\nwhile(a < 15){\ncout << ''value of a: '' << a << endl;\na++;\n}\nreturn 0;\n", 
      "value of a: 10\nvalue of a: 11\nvalue of a: 12\nvalue of a: 13\nvalue of a: 14")); 


    ArrayList<String> names = new ArrayList<String>(); 

    for (int i=0; i<ctitle.size(); i++) 
    { 
     names.add(ctitle.get(i).getTopic()); 
    } 

    cAdapter = new ArrayAdapter<String>(CActivity.this, android.R.layout.simple_list_item_1, names); 
    ctopics.setAdapter(cAdapter); 



    ctopics.setOnItemClickListener(new OnItemClickListener() 
    { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     { 
      Intent intent = new Intent(CActivity.this, Cdisplay.class); 
      intent.putExtra("info", ctitle.get(position)); 
      startActivityForResult(intent, 0); 

     } 

    }); 

ためである位置0に移動しますすべてのヘルプははるかに高く評価されるだろう、ありがとうございました!

編集:

パブリッククラスCtitleは直列化を{

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

private String topic,code,result; 

public Ctitle(String topic,String code,String result) 
{ 
    super(); 
    this.topic=topic; 
    this.code=code; 
    this.result=result; 

} 

public String getTopic() { 
    return topic; 
} 

public void setTopic(String topic) { 
    this.topic = topic; 
} 

public String getCode() { 
    return code; 
} 

public void setCode(String code) { 
    this.code = code; 
} 

public String getResult() { 
    return result; 
} 



public void setResult(String result) { 
    this.result = result; 
} 

}

+0

代わり 'ctitle.get(位置)の' cAdapter.getItem(位置)を ''試し実装します。 – Titus

+0

Imに「ArrayList型のメソッドgetItem(int)が未定義です」 – James

+0

「ArrayList」ではなく「ArrayAdapter」のメソッドを呼び出します。例: 'cAdapter.getItem(position)' – Titus

答えて

0
ctopics.setOnItemClickListener(new OnItemClickListener() 
{ 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 
     Intent intent = new Intent(CActivity.this, Cdisplay.class); 
     intent.putExtra("info", (String)ctopics.getItemAtPosition(position)); 
     startActivityForResult(intent, 0); 

    } 

}); 
+0

IMを作成する方法を検索します。「メソッドgetItemAtPosition(int)は型ArrayListのために未定義です」 – James

+0

私の編集した答えを見てください。私はそれをctitleからctopicsに変更しました。 – ErShani

関連する問題