2017-08-15 54 views
1

我有一個片段類內的列表視圖。當一個列表視圖項被點擊時,另一個活動被打開。該活動的xml文件在滾動視圖內有2個圖像視圖。圖像相對於每個點擊的列表視圖項目而改變。在我的應用中有5個列表視圖。每個listview有400多個項目。使用什麼方法才能順利運行。 switch語句是個好主意嗎?目前我正在使用switch語句,目前只有4個項目。我應該保持這種方法嗎?如何處理非常大的listview項目?通過switch語句或if/else語句?

我的代碼

public class urdufrag1 extends Fragment { 

public urdufrag1() { 
    // Required empty public constructor 
} 

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 

} 

private static final String TAG = "urdufrag1"; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
main_content, @Nullable Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.geetfrag_urdu, main_content, false); 



    final int[] menuImage = {R.drawable.tgeet94, 
    R.drawable.tgeet95,R.drawable.tgeet96,R.drawable.tgeet97}; 
    final ListView listView = (ListView) view.findViewById(R.id.GeetListU); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
      Intent intent = new Intent(getActivity(), PackageG.class); 
      intent.putExtra("position", position); 
      startActivity(intent); 

     } 
    }); 
    AdapterGeetUrdu adapter = new AdapterGeetUrdu(getContext(), menuImage); 
    listView.setAdapter(adapter); 

    // Inflate the layout for this fragment 



    return view; 
} 

}

次活動

public class PackageG extends AppCompatActivity { 

ImageView img1, img2; 
PhotoViewAttacher mAttacher; 



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

    img1 = (ImageView) findViewById(R.id.imageView8); 
    img2 = (ImageView) findViewById(R.id.imageView9); 
    mAttacher = new PhotoViewAttacher(img1); 
    mAttacher = new PhotoViewAttacher(img2); 

    Intent intent = this.getIntent(); 
    if(intent != null){ 
     Integer position = intent.getExtras().getInt("position"); 

     switch (position){ 

      case 0: img1.setImageResource(R.drawable.geet94); 
        img2.setImageResource(R.drawable.geet94_1); 
       break; 
      case 1: img1.setImageResource(R.drawable.geet95); 
        img2.setImageResource(R.drawable.geet95_1); 
       break; 
      case 2: img1.setImageResource(R.drawable.geet96); 
        img2.setImageResource(R.drawable.geet96_1); 
       break; 

      default: 
       img1.setImageResource(R.drawable.carol); 
       img2.setImageResource(R.drawable.carol); 
       break; 

     } 

    } 

    mAttacher.update(); 

} 

}

My list view

Second Activity

+0

Nopes。但是我問這是因爲我不確定400 + switch語句是否正常工作,或者我應該使用一些不同的方法? –

+0

[Resources#getIdentifier(String name,String defType,String defPackage)](https://stackoverflow.com/questions/15503639/how-i-can-optimize-this-code-that-c​​ontain-some-repetitive-line #answer-15503893)返回給定資源名稱的資源標識符。 – matoni

回答

0

這是一個TypedArray完美的工作。像

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<array name="firstImages"> 
    <item>@drawable/R.drawable.geet94</item> 
    <item>@drawable/R.drawable.geet95</item> 
    <item>@drawable/R.drawable.geet96</item> 
    ... 
</array> 
<array name="secondImages"> 
    <item>@drawable/R.drawable.geet94_1</item> 
    <item>@drawable/R.drawable.geet95_1</item> 
    <item>@drawable/R.drawable.geet96_1</item> 
    ... 
</array> 
</resources> 

,然後在你的第二個活動創建一個文件res/values/arrays.xml的東西:

Intent intent = this.getIntent(); 
if(intent != null){ 
    Integer position = intent.getExtras().getInt("position"); 
    Resources res = getResources(); 

    TypedArray firstImages = res.obtainTypedArray(R.array.firstImages); 
    TypedArray secondImages = res.obtainTypedArray(R.array.secondImages); 

    Drawable firstDrawable = firstImages.getDrawable(position); 
    Drawable secondDrawable = secondImages.getDrawable(position); 

    img1.setImageDrawable(firstDrawable); 
    img2.setImageDrawable(secondDrawable); 
} 
+0

這種方法比switch語句更好嗎? –

+0

想象一下,你有400個元素,並且你想在位置100處插入一些東西。你必須去增加下面每個300個case語句的值!有了這個,你只需將數組插入到正確的位置,就完成了。另外,一般來說,幾乎任何時候你可以用聲明式的東西代替命令式的風格,這是一個勝利。在XML中編輯數組要比在Java中編輯流控制結構要容易和安全。 – theFunkyEngineer

+0

您覺得這有幫助嗎?還有其他問題嗎? – theFunkyEngineer