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

안드로이드 리스트뷰에서 검색 후 검색 결과 리스트 클릭시 화면전환

0 추천

리스트뷰에 몇가지 항목이 있고 검색으로 찾고싶은 리스트를 찾은다음 그 리스트를 클릭하면 지정했던 액티비티로 전환되어야하는데 포지션으로 정해놔서그런지 검색하면 맨위에 리스틀 클릭하면 position 0 그러니깐 맨윗부분에 지정해놓은 액티비티로 저장되더라고요.. 정보를 검색해본 결과 클리어?를해줘야한다는데 어떻게 하는지 모르겠습니다. 

소스 올릴테니 답변좀 부탁드려요!!!

package com.example.swtesting;
 
import java.util.ArrayList;
 
import android.app.Activity;
import android.app.TabActivity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec;
import android.widget.TabWidget;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends TabActivity implements AdapterView.OnItemClickListener, OnClickListener  {
 
ArrayList<String> strlist1;
 
    ListView listview;
    private AutoCompleteTextView autoComplete;
    private ArrayAdapter<String> adapter;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(R.layout.activity_main); 
 
TabHost tabHost = getTabHost();
 
TabSpec tabSpec1 = tabHost.newTabSpec("Tab1").setIndicator("사전");
tabSpec1.setContent(R.id.tab1);
tabHost.addTab(tabSpec1);
 
 
autoComplete =
(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
 
listview = (ListView) findViewById(R.id.listView1);
 
strlist1 = new ArrayList<String>();
 
strlist1.add("가나다");
strlist1.add("라마바");
strlist1.add("테스트");
strlist1.add("사아자차");
strlist1.add("킹킹콩");
strlist1.add("코카콜라");
 
listview.setDivider(new ColorDrawable(Color.BLACK)); // 리스트뷰 경계선 색깔 선택
listview.setDividerHeight(5); // 리스트뷰 경계선 굵기 지정
 
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, strlist1);
 
autoComplete.setAdapter(adapter);
 
 
listview.setAdapter(adapter);
 
listview.setOnItemClickListener(this); 
 
 
TabSpec tabSpec2 = tabHost.newTabSpec("Tab2").setIndicator("블로그");
tabSpec2.setContent(R.id.tab2);
tabHost.addTab(tabSpec2);
 
TabSpec tabSpec3 = tabHost.newTabSpec("Tab3").setIndicator("음음");
tabSpec3.setContent(R.id.tab3);
tabHost.addTab(tabSpec3);
 
TabSpec tabSpec4 = tabHost.newTabSpec("Tab4").setIndicator("공유");
tabSpec4.setContent(R.id.tab4);
tabHost.addTab(tabSpec4);
   
 
private void notiftyDataSetChanged() {
// TODO Auto-generated method stub
 
}
 
 
@Override
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
 
// 이 부분이 다른 액티비티를 보여주는 부분
if (position == 0) {
   Intent intent0 = new Intent(MainActivity.this, ItemView.class);
   startActivity(intent0);
}
 
else if (position == 1) { 
Intent intent1 = new Intent(MainActivity.this, ItemView02.class);
startActivity(intent1);
}
else if (position == 2) { 
Intent intent2 = new Intent(MainActivity.this, ItemView03.class);
startActivity(intent2);
}
 
Toast.makeText(getApplicationContext(), ((TextView)view).getText(), //해당 아이템 클릭시 토스트
         Toast.LENGTH_SHORT).show();
 
 
}
 
 
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
 
}
}
 
 
이제는 해야할 때 (710 포인트) 님이 2014년 6월 29일 질문

2개의 답변

0 추천
맨위에 포지션이 0이고 거기 지정해놓은 액티비티로 이동한게 잘못됐따는 건가요?

원하시는 액션이 어떻게 되어야하는건지? 그리고 뭐가 문제라는건지?? 질문자님이 어떤 의도와

어떤 문제로 질문을 올리신건지 파악하기가 힘드네요.
쭈쭈총각 (17,750 포인트) 님이 2014년 6월 30일 답변
안녕하십니까 제가 질문 방법이 틀렸던거 같습니다.
제가 질문하고 싶은점은
리스트뷰에 아이템들 클릭했을때 액티비티로 전환되게끔 포지션 0, 1, 2, 3 ... 순서대로 정해놨습니다. 여기까지는 잘됩니다.
근데 서치뷰(검색)를 통해서 검색하면 검색한 결과가 뜨잖아요?
그 값을 클릭했을때 그 값의 지정해놨던(포지션3으로 지정했다고 가정하에)
포지션3이 떠야되는데 포지션0값의 액티비티로 전환된다는 얘기입니다..검색하면 리스트뷰 맨위에 값이 생기니깐 포지션도 0으로 지정된 액티비티가 뜨는거 같습니다!!! 어떻게해야할까요..
0 추천

제가 지금 좀 헷갈려서 그런데 제가 좀 여쭤볼게요.

리스트뷰에 선언해놓은 값들이 

strlist1.add("가나다");
strlist1.add("라마바");
strlist1.add("테스트");
strlist1.add("사아자차");
strlist1.add("킹킹콩");
strlist1.add("코카콜라");
 
얘네 맞죠?
검색하기 전에 그냥 단순히 리스트에 있는 애들 클릭해서 포지션 값으로 구별해서
intent로 액티비티 이동하는거면 맞는건데...
만약 저 상태에서 검색을 해서 2번째 포지션인 "테스트"를 눌렀을 때 2번째 포지션에 맞는 intent값으로 넘어가야 하는데 포지션0의 인텐트로 넘어간다 이말씀이신가요?..
보통 이럴 때 포지션 값이 살아있나요..? 저도 초보인지라 궁금하네요.
저같은 경우엔 포지션값보단 검색 후 해당 열이 갖고있는 회원명으로 구별해서 다른 작업을 했었거든요.
 
anci (19,950 포인트) 님이 2014년 6월 30일 답변
Log 로 값 확인해보세요. 아까 포지션 값은 들어온다고 하셨으니..
그리고 맨 위에 온아이템클릭에서 id의 형은 long 입니다.
String value 밑에 Log.d("밸류값확인",value); 이거 넣으시고 value가 어떤 값을 갖고있는지 부터 확인하셔야 할거같네요. string 형식의 value의 값이 없으면 당연히 밑에 if문은 소용이 없겠죠
아 주먹밥님 감사합니다.
이 문제 해결됬습니다!!!
혹시 실례지만 가능하시다면 연락처좀 알 수 있을까요
공부하는 학생인데 멘토가 되주신다면 좋을거같아서요..
편하게생각해주시면감사하겠습니다~~!^^
해결되셨다니 다행이네요..
저도 아직 미숙해서 도움이 될련지 모르겠네요..제 닉네임 클릭하시면 블로그 주소 있는데 거기다 제가 막혓던거나 다른 자료들 가끔 올립니다. 건승하세요.
같은 문제가 발생하고 있는데 어떻게 해결하셨나요?? 알려주실수 있으신가요ㅠㅠㅠ 제발..
@Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        String value = parent.getItemAtPosition(position).toString();
        Log.d("가나다",value);
        Log.d("라마바",value);

        if (value.equals("가나다")){
            Intent intent0 = new Intent(ViewList.this, Position00.class);
            startActivity(intent0);
        }
        else if (value.equals("라마바")){
            Intent intent01 = new Intent(ViewList.this, Position01.class);
            startActivity(intent01);
        }

        Toast.makeText(getApplicationContext(), ((TextView)view).getText(), //해당 아이템 클릭시 토스트
                Toast.LENGTH_SHORT).show();
==============
요렇게 하면 안되는 건가요?? 터치시 종료됩니다ㅜㅜㅜ
...