마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

listview검색 질문 드립니다 클릭이벤트 구현좀 도와주세요 ㅠㅠ

0 추천
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
    CustomerAdapter adapter = null;
    ArrayList<Customer> customers = null;
    ListView myCustomListView;
    SearchView mySearchView = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        customers = new ArrayList<>();
        customers = populateCustomerData(customers);
        mySearchView = (SearchView) findViewById(R.id.mySearchView);
        myCustomListView = (ListView) findViewById(R.id.myCustomListView);
        adapter = new CustomerAdapter(this, customers);
        myCustomListView.setAdapter(adapter);

        myCustomListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (id ==0) {
            Intent intent = new Intent(MainActivity.this, account1.class);
            MainActivity.this.startActivity(intent);
        }
        if(id== 1){
            Intent intent1 = new Intent(MainActivity.this, account2.class);
            MainActivity.this.startActivity(intent1);
        }...
    mySearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s)
        {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            // Here implement search logic
            adapter.getFilter().filter(s);
            adapter.notifyDataSetChanged();
            return false;
        }
    });
}
    private ArrayList<Customer> populateCustomerData(ArrayList<Customer> customers) {

            customers.add(new Customer("조회", 1, R.drawable.account));
            customers.add(new Customer("인출", 2, R.drawable.account));
            customers.add(new Customer("입금", 3, R.drawable.account));
          return customers;

   }
}
저렇게 코드를 짰는데요, 처음에 리스트뷰 상태에서 누를 때는 잘 작동 하는데 
검색 후 리스트뷰를 누르면 값이 초기화 되더라구요.. 
이럴때 onclick을 어떻게 구현해야 할까요?
예를들면 검색 시 "입금"을 입력했는데 그 값을 누르면 
첫번째 리스트뷰 값인 "조회"가 뜹니다! 
꾸뀨꺄라아 (120 포인트) 님이 2018년 9월 25일 질문

2개의 답변

+1 추천
onItemClick(...){
   if(id = 0) ...
}

->

onItemClick(...){
   if(position = 0) ...
}

이렇게 해 보세요...

 

어댑터 구현이 어떻게 되어 있는지는 모르겠지만

id로 동작할리가 없는 코드인것 같은데, 기본 상태에서라도 동작한다는게 더 신기하네요...

익명사용자 님이 2018년 9월 26일 답변
2018년 9월 26일 수정
0 추천
onItemClick 메소드 안에 id==0 이렇게 된 거 다 position으로 바꾸셔야할듯

아마 저기 id라고 해서 가져오는 게 어댑터 클래스의 getItemId() 메소드의 반환값을 가져오는 거지싶어서

해당 메소드 return값을 position값과 똑같이 하면 되긴 할건데..

 

음 그런데 그냥 position으로 쓰는 게 좋을거같아여.
relz (2,550 포인트) 님이 2018년 9월 26일 답변
...