2015-05-22 5 views
0

еще одна проблема: Мы сейчас в ModLoader, с функцией просмотра, которая отлично работает с обычным ListView. Но нам нужно отобразить изображение на SubItem, поэтому ObjectListView оказался очень удобным.Как правильно добавить элементы в ObjectListView?

Как только я запустил программу, я получил InvalidCastException, потому что я не использовал SetObjects(), поэтому я создал список типов TroveSaurusMods и класс, который называется тем же. Добавление элементов просто отлично работает, но элементы не отображаются в OLV. Может кто-то помочь мне с этим? И после этого, помогите мне с отображением изображения?

Вот мой код для добавления элементов:

private void getMods(ref ObjectListView location) 
    { 
     var lstItems = new List<TroveSaurusMod>(); 
     logger.log("Trying to add mods from TroveSaurus to the list...", Logger.logLevel.INFO); 
     try 
     { 
      using (var webClient = new System.Net.WebClient()) 
      { 
       var jsonWeb = webClient.DownloadString("API LINK HERE"); 
       string json = js.Deserialize(new JsonTextReader(new System.IO.StringReader(jsonWeb))).ToString(); 
       jtr = new JsonTextReader(new System.IO.StringReader(json)); 
       JArray a = JArray.Parse(json); 
       for (int i = 0; i < a.Count; i++) 
       { 
        var element = a[i]; 
        JsonTextReader arRead = new JsonTextReader(new System.IO.StringReader(element.ToString())); 
        OLVListItem item = null; 
        lvBrowse.SmallImageList = imgSmall; 
        while (arRead.Read()) 
        { 
         if (arRead.Value != null) 
         { 
          if (arRead.Value.ToString() == "id") 
          { 
           item = new OLVListItem(arRead.ReadAsString()); 
          } 
          if (arRead.Value.ToString() == "name") 
          { 
           item.SubItems.Add(arRead.ReadAsString()); 
          } 
          if (arRead.Value.ToString() == "author") 
          { 
           item.SubItems.Add(arRead.ReadAsString()); 
          } 
          if (arRead.Value.ToString() == "type") 
          { 
           item.SubItems.Add(arRead.ReadAsString()); 
          } 
          if (arRead.Value.ToString() == "subtype") 
          { 
           item.SubItems.Add(arRead.ReadAsString()); 
          } 
          if (arRead.Value.ToString() == "fileid") 
          { 
           item.SubItems.Add(arRead.ReadAsString()); 
          } 
          if (arRead.Value.ToString() == "filedate") 
          { 
           item.SubItems.Add(UnixTimeStampToDateTime(Double.Parse(arRead.ReadAsString())).ToShortDateString()); 
          } 
         } 
        } 
        //item.ImageIndex = i; 

        lstItems.Add(new TroveSaurusMod(item.Text, item.SubItems[1].Text, item.SubItems[2].Text, item.SubItems[3].Text, item.SubItems[4].Text, item.SubItems[5].Text, item.SubItems[6].Text)); 
        logger.log("Successfully added " + item.Text + " to the list!", Logger.logLevel.FINE); 
       } 
       lvBrowse.SetObjects(lstItems.ToString()); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Unable to retrieve mod list from TroveSaurus! Please check your internet connection!", "Error parsing mods"); 
      logger.log(ex.StackTrace.ToString(), Logger.logLevel.ERROR); 
      throw; 
     } 
    } 

И мой класс TroveSaurusMods:

public class TroveSaurusMod 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public string Author { get; set; } 
    public string Type { get; set; } 
    public string SubType { get; set; } 
    public string FileId { get; set; } 
    public string FileDate { get; set; } 

    public TroveSaurusMod(string id, string name, string author, string type, string subtype, string fileId, string fileDate) 
    { 
     Id = id; 
     Name = name; 
     Author = author; 
     Type = type; 
     SubType = subtype; 
     FileId = fileId; 
     FileDate = fileDate; 
    } 
} 

Я никогда не работал со списками, только с ListView. Скажите, пожалуйста, если я сделал что-то не так, и то, что мне нужно изменить :) Спасибо

EDIT: Нашел ответ ... нужно установить AspectName: D

ответ

0

Хорошо, я только что узнал, что Мне пришлось установить AspectName для каждого столбца ... извините: O

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