2016-04-12 3 views
1

У меня много просмотров (около 30, может быть, будет больше), как и открытки. Я установил onClickListener для каждого из них, но он не работает. Отсутствие реакции. Вот мой код:Настройка onClickListeners для большого количества просмотров

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_start); 
    final EditText searchProfile = (EditText) findViewById(R.id.search_profile); 
    final Button btnSearch = (Button) findViewById(R.id.btn_search); 
    final LinearLayout layoutProfileLeft = (LinearLayout) findViewById(R.id.layout_profiles_left); 
    searchProfile.setHint("UserName..."); 
    btnSearch.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String profileName = searchProfile.getText().toString(); 
      urlForProfile = "http://www.dotabuff.com/search?utf8=&q=" + searchProfile.getText().toString().replace(" ", "+") + "&commit=Search"; 
      while (htmlSrc == "" || htmlSrc == null) { 
       setHtmlSrc(urlForProfile); 
      } 
      ArrayList<Integer> ids = new ArrayList<Integer>(); 
      for (int i = 0; i < 30; i++) { 
       searchedHeroes.add(i, new SearchedHero(i)); 
       RelativeLayout l = new RelativeLayout(StartActivity.this); 
       RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(-1,-2); 
       rlp.setMargins(8, 0, 8, 8); 
       l.setLayoutParams(rlp); 
       l.setBackgroundColor(Color.rgb(69,90,100)); 
       l.setPadding(8,0,8,8); 
       l.setId(i); 
       //l.setLayoutParams(LinearLayout.); 
       ImageView img = new ImageView(StartActivity.this); 
       new DownloadImageTask(img).execute(searchedHeroes.get(i).getImageSrc()); 
       img.setOnClickListener(this); 
       img.setId(i + 40); 
       l.addView(img); 
       RelativeLayout innerL = new RelativeLayout(StartActivity.this); 
       RelativeLayout.LayoutParams paramsForInnerL = new RelativeLayout.LayoutParams 
         (-2, -2); 
       paramsForInnerL.addRule(RelativeLayout.RIGHT_OF, img.getId()); 
       TextView txtProfileName = new TextView(StartActivity.this); 
       txtProfileName.setText(searchedHeroes.get(i).getName()); 
       txtProfileName.setId(i + 80); 
       TextView txtLastMatch = new TextView(StartActivity.this); 
       txtLastMatch.setText(searchedHeroes.get(i).getLastMatch()); 
       txtProfileName.setTextSize(14); 
       txtProfileName.setTextColor(Color.WHITE); 
       txtLastMatch.setId(i + 120); 
       RelativeLayout.LayoutParams paramsForNameLastMatch = new RelativeLayout.LayoutParams 
         (
           RelativeLayout.LayoutParams.WRAP_CONTENT, 
           RelativeLayout.LayoutParams.WRAP_CONTENT 
         ); 
       innerL.addView(txtProfileName, rlp); 
       paramsForNameLastMatch.addRule(RelativeLayout.BELOW, txtLastMatch.getId()); 
       innerL.addView(txtLastMatch, paramsForNameLastMatch); 
       l.addView(innerL, paramsForInnerL); 
       l.setOnClickListener(this); 
       ids.add(i, l.getId()); 
       layoutProfileLeft.addView(l, rlp); 
       //} 
       //m.find(); 
       //passUrl = "http://www.dotabuff.com" + m.group(1); 
       //Intent pass = new Intent(StartActivity.this, MainActivity.class); 
       //pass.putExtra("EmpID", searchedHeroes.get(0).getProfileUrl()); 
       //startActivity(pass); 
       //} 
       //} 
      } 
     } 
    }); 
} 

@Override 
public void onClick(View v) { 
    Intent pass = new Intent(StartActivity.this, MainActivity.class); 
    pass.putExtra("Link", searchedHeroes.get(v.getId()).getProfileUrl()); 
    startActivity(pass); 
} 

Наверное, каждый вид должен умысел другой деятельности. Спасибо.

+0

l.setOnClickListener (StartActivity.this); – HenryChuang

+0

1. Почему? Вы используете финал? 2. Почему? Вы используете два OnClickListener? –

ответ

-1

Мне кажется, что вы забыли установить свои взгляды кликабельны: view.setClickable(true)

+0

Его все еще не работает. – bewusstlos

+0

По умолчанию кнопка 'Button' доступна по умолчанию. – codeMagic

+0

Возможно, я что-то пропустил, но я не вижу никаких изображений. Существует 'onClick()' для 'Button', а затем еще один' onClick() 'для некоторого типа' View' – codeMagic

-1
public class MainActivity extends Activity implements View.OnClickListener { 
EditText searchProfile; 
Button btnSearch; 
LinearLayout layoutProfileLeft 

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_start); 
searchProfile = (EditText) findViewById(R.id.search_profile); 
btnSearch = (Button) findViewById(R.id.btn_search); 
layoutProfileLeft = (LinearLayout) findViewById(R.id.layout_profiles_left); 
searchProfile.setHint("UserName..."); 
btnSearch.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
Intent pass = new Intent(StartActivity.this, MainActivity.class); 
String profileName = searchProfile.getText().toString(); 
     urlForProfile = "http://www.dotabuff.com/search?utf8=&q=" + searchProfile.getText().toString().replace(" ", "+") + "&commit=Search"; 
     while (htmlSrc == "" || htmlSrc == null) { 
      setHtmlSrc(urlForProfile); 
     } 
     ArrayList<Integer> ids = new ArrayList<Integer>(); 
     for (int i = 0; i < 30; i++) { 
      searchedHeroes.add(i, new SearchedHero(i)); 
      RelativeLayout l = new RelativeLayout(StartActivity.this); 
      RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(-1,-2); 
      rlp.setMargins(8, 0, 8, 8); 
      l.setLayoutParams(rlp); 
      l.setBackgroundColor(Color.rgb(69,90,100)); 
      l.setPadding(8,0,8,8); 
      l.setId(i); 
      //l.setLayoutParams(LinearLayout.); 
      ImageView img = new ImageView(StartActivity.this); 
      new DownloadImageTask(img).execute(searchedHeroes.get(i).getImageSrc()); 
      img.setOnClickListener(this); 
      img.setId(i + 40); 
      l.addView(img); 
      RelativeLayout innerL = new RelativeLayout(StartActivity.this); 
      RelativeLayout.LayoutParams paramsForInnerL = new RelativeLayout.LayoutParams 
        (-2, -2); 
      paramsForInnerL.addRule(RelativeLayout.RIGHT_OF, img.getId()); 
      TextView txtProfileName = new TextView(StartActivity.this); 
      txtProfileName.setText(searchedHeroes.get(i).getName()); 
      txtProfileName.setId(i + 80); 
      TextView txtLastMatch = new TextView(StartActivity.this); 
      txtLastMatch.setText(searchedHeroes.get(i).getLastMatch()); 
      txtProfileName.setTextSize(14); 
      txtProfileName.setTextColor(Color.WHITE); 
      txtLastMatch.setId(i + 120); 
      RelativeLayout.LayoutParams paramsForNameLastMatch = new RelativeLayout.LayoutParams 
        (
          RelativeLayout.LayoutParams.WRAP_CONTENT, 
          RelativeLayout.LayoutParams.WRAP_CONTENT 
        ); 
      innerL.addView(txtProfileName, rlp); 
      paramsForNameLastMatch.addRule(RelativeLayout.BELOW, txtLastMatch.getId()); 
      innerL.addView(txtLastMatch, paramsForNameLastMatch); 
      l.addView(innerL, paramsForInnerL); 
      l.setOnClickListener(this); 
      ids.add(i, l.getId()); 
      layoutProfileLeft.addView(l, rlp); 
     } 
pass.putExtra("Link", searchedHeroes.get(v.getId()).getProfileUrl()); 
startActivity(pass); 
} 
+0

Только ответы на код обычно не подходят для SO. Вы должны подумать о том, чтобы добавить небольшое объяснение к * почему * ваш код решает проблему и как она отличается при цитировании любых полезных ссылок, которые добавляют к решениям. – codeMagic

Смежные вопросы