如何使短代码

问题描述:

这是我的第一个应用程序的代码的一部分。目前,我只添加了2个默认值gab的TextView,点击它们弹出6个值PopupMenu。通过单击PopupMenu中的任何值,TextView的值将更改为单击的值(不会更改其他未单击的TextView值)。我打算添加像100或甚至更多这种TextViews。每个人写作,复制和编辑ID等都太乱了。如何使短代码

这是如何缩短的? 值的数量不会改变(6),ViewId的数量(例如augli_mervieniba和bites_mervieniba)将是巨大的。

public void popup_mervieniba(final View view) 
    { 
     PopupMenu popupMenu = new PopupMenu(this, view); 
     MenuInflater menuInflater = popupMenu.getMenuInflater(); 
     popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
      @Override 
      public boolean onMenuItemClick(MenuItem item) { 

这部分是,如果第一TextView的被点击

   if (view==findViewById(R.id.augli_mervieniba)) 

        switch (item.getItemId()) { 
         case R.id.gab: 
          TextView t_gab = (TextView) findViewById(R.id.augli_mervieniba); 
          t_gab.setText(R.string.gab); 
          return true; 
         case R.id.iep: 
          TextView t_iep = (TextView) findViewById(R.id.augli_mervieniba); 
          t_iep.setText(R.string.iep); 
          return true; 
         case R.id.g: 
          TextView t_g = (TextView) findViewById(R.id.augli_mervieniba); 
          t_g.setText(R.string.g); 
          return true; 
         case R.id.kg: 
          TextView t_kg = (TextView) findViewById(R.id.augli_mervieniba); 
          t_kg.setText(R.string.kg); 
          return true; 
         case R.id.ml: 
          TextView t_ml = (TextView) findViewById(R.id.augli_mervieniba); 
          t_ml.setText(R.string.ml); 
          return true; 
         case R.id.l: 
          TextView t_l = (TextView) findViewById(R.id.augli_mervieniba); 
          t_l.setText(R.string.l); 
          return true; 
       } 

如果第二TextView的被点击的代码

return false; 
      } 
     }); 
     menuInflater.inflate(R.menu.popup_mervieniba, popupMenu.getMenu()); 
     popupMenu.show(); 
    } 
+0

将所有视图实例化一个地方,只是致电然后在开关 – Want2bExpert

+0

什么是'R.id.bietes_mervieniba'和'R.id.augli_mervieniba'? – iTurki

+0

他们是TextView的编号 – NorKais

  else if (view==findViewById(R.id.bietes_mervieniba)) 
        switch (item.getItemId()) { 
         case R.id.gab: 
          TextView t_gab = (TextView) findViewById(R.id.bietes_mervieniba); 
          t_gab.setText(R.string.gab); 
          return true; 
         case R.id.iep: 
          TextView t_iep = (TextView) findViewById(R.id.bietes_mervieniba); 
          t_iep.setText(R.string.iep); 
          return true; 
         case R.id.g: 
          TextView t_g = (TextView) findViewById(R.id.bietes_mervieniba); 
          t_g.setText(R.string.g); 
          return true; 
         case R.id.kg: 
          TextView t_kg = (TextView) findViewById(R.id.bietes_mervieniba); 
          t_kg.setText(R.string.kg); 
          return true; 
         case R.id.ml: 
          TextView t_ml = (TextView) findViewById(R.id.bietes_mervieniba); 
          t_ml.setText(R.string.ml); 
          return true; 
         case R.id.l: 
          TextView t_l = (TextView) findViewById(R.id.bietes_mervieniba); 
          t_l.setText(R.string.l); 
          return true; 
       } 

端这部分是针对

这样做;

ActivityClass 
{ private TextView tv1, tv2....... 
onCreate() 
{ 
tv1 = (TextView) findViewById(); 
tv2 = (TextView) findViewById(); 
} 

switch() 
{ 
case R.id.gap: 
tv1.setText(); 
return; 
……………… 
} 
+0

尽我所知,这不会改变线条的数量,只是缩短它们。 – NorKais

+0

线条越短意味着代码越短越整齐。这不是你想要的吗? – Want2bExpert